设为首页 加入收藏

TOP

3.10.3 用法
2013-10-07 13:14:27 来源: 作者: 【 】 浏览:65
Tags:3.10.3 用法

3.10.3  用法

object_pool的用法也是很简单,我们既可以像pool那样分配原始内存块,也可以使用construct()来直接在内存池中创建对象。当然,后一种使用方法是最方便的,也是本书所推荐的。

下面的代码示范了object_pool的用法:

  1. #include <boost/pool/object_pool.hpp> 
  2. using namespace boost;  
  3. struct demo_class                           //一个示范用的类  
  4. {  
  5. public:  
  6.     int a,b,c;  
  7.     demo_class(int x = 1, int y = 2, int z = 3):a(x),b(y),c(z){}  
  8. };  
  9. int main()  
  10. {  
  11.     object_pool<demo_class> pl;             //对象内存池  
  12.  
  13.     demo_class *p = pl.malloc();            //分配一个原始内存块  
  14.     assert(pl.is_from(p));  
  15.  
  16.     //p指向的内存未经过初始化  
  17.     assert(p->a!=1 || p->b != 2 || p->c !=3);  
  18.  
  19.     p = pl.construct(7, 8, 9);              //构造一个对象,可以传递参数  
  20.     assert(p->a == 7);  
  21.  
  22.     object_pool<string> pls;                //定义一个分配string对象的内存池  
  23.     for (int i = 0; i < 10 ; ++i)           //连续分配大量string对象  
  24.     {  
  25.         string *ps = pls.construct("hello object_pool");  
  26.         cout << *ps << endl;  
  27.     }  
  28. }                                           //所有创建的对象
    在这里都被正确析构、释放内存 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.10.1 类摘要 下一篇3.11.1 类摘要

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: