编写高质量代码:改善C++程序的150个建议(连载18)

发表于:2012-4-27 09:40  作者:李健   来源:51Testing软件测试网采编

字体: | 上一篇 | 下一篇 |我要投稿 | 推荐标签:

  pool的析构函数会释放pool占用的内存。

object_pool (#include <boost/pool/object_pool.hpp>

  object_pool和pool的区别在于:pool指定每次分配的块的大小,object_pool指定分配的对象的类型,如下所示:

boost::object_pool<A> p;

  用A * pA = p.malloc()只会分配内存而不会调用构造函数,如果要调用构造函数应该使用A * const t = p.construct();

singleton_pool (#include <boost/pool/singleton_pool.hpp>

  singleton_pool和object_pool一样,不过它可以定义多个pool类型的object,给它们都分配同样大的内存块,另外singleton_pool提供静态方法分配内存,且不用定义对象,如下所示:

  1. struct PoolTag{};  
  2. typedef boost::singleton_pool<PoolTag,sizeof(int)> User_pool;  
  3. int * const t = User_pool::malloc();  
  4.  
  5. my_pool::purge_memory(); //用完后释放内存  
  6. pool_allocator (#include <boost/pool/pool_alloc.hpp>)  
  7. pool_allocator基于singleton_pool实现,提供allocator,可用于STL等:  
  8. std::vector<int, pool_allocator<int> > v;  
  9. v.push_back(13);  
  10. boost::singleton_pool<sizeof(int)>::release_memory(); //显式调用释放内存

  由此可见,Boost确实是一个值得称赞、更值得使用的库,它能为我们提供极大的便利。当需要使用内存池技术时,请考虑Boost。

  请记住:

  当你需要频繁地分配相同大小的对象,而又苦恼于默认的内存管理函数带来的问题时,内存池技术将是灵丹妙药,它能提高内存操作效率,以及应用程序的鲁棒性。

相关链接:

编写高质量代码:改善C++程序的150个建议(连载1)

编写高质量代码:改善C++程序的150个建议(连载2)

编写高质量代码:改善C++程序的150个建议(连载3)

编写高质量代码:改善C++程序的150个建议(连载4)

编写高质量代码:改善C++程序的150个建议(连载5)

编写高质量代码:改善C++程序的150个建议(连载6)

编写高质量代码:改善C++程序的150个建议(连载7)

编写高质量代码:改善C++程序的150个建议(连载8)

编写高质量代码:改善C++程序的150个建议(连载9)

编写高质量代码:改善C++程序的150个建议(连载10)

编写高质量代码:改善C++程序的150个建议(连载11)

编写高质量代码:改善C++程序的150个建议(连载12)

编写高质量代码:改善C++程序的150个建议(连载13)

编写高质量代码:改善C++程序的150个建议(连载14)

编写高质量代码:改善C++程序的150个建议(连载15)

编写高质量代码:改善C++程序的150个建议(连载16)

编写高质量代码:改善C++程序的150个建议(连载17)


44/4<1234

评 论

论坛新帖



建议使用IE 6.0以上浏览器,800×600以上分辨率,法律顾问:上海信义律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2021, 沪ICP备05003035号
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪公网安备 31010102002173号

51Testing官方微信

51Testing官方微博

扫一扫 测试知识全知道