Cpper
C/C++高级工程师 Android高级软件工程师 IT集成工程师 音频工程师 熟悉c,c++,java,c#,py,js,asp等多种语言 程序猿
使用boost pool的简单例子如下:
#include <cstdlib>
#include 
<iostream>
#include 
<boost/pool/pool.hpp>
#include 
<boost/pool/object_pool.hpp>
using namespace std;
using namespace boost;

class Object
{
public:
    Object(){cout
<<"new obj"<<endl;}
    
~Object(){cout<<"delete obj"<<endl;}      
}; 

int main(int argc, char *argv[])
{   
    
//!每次分配的块的大小
    const int blocksize = sizeof(int); 
    boost::pool
<> alloc(blocksize);
    
for(int i = 0; i < 100; i++)
    {   
        
//! 分配 
        int* ptr = (int*)alloc.malloc();
        cout
<<*ptr<<endl;
        
//! 释放     
        alloc.free(ptr);    
    }
    
    
//!object pool每次需要指定对象大小 
    boost::object_pool<Object> pool_alloc;
    
for(int i = 0;i < 100;i++)
    {   
        
//! 分配内存 
        void* mem = pool_alloc.malloc();
        
//! 构造
        Object *obj = new(mem)Object(); 
        
//! 析构 
        pool_alloc.destroy(obj);
    }
  
    system(
"PAUSE");
    
return EXIT_SUCCESS;
}
//! ccsdu2004

posted on 2010-08-15 14:54 ccsdu2009 阅读(973) 评论(1)  编辑 收藏 引用 所属分类: boost库等
Comments
  • # re: boost之6.boost的pool使用
    bslz
    Posted @ 2010-08-22 03:02
    不知道boost的pool与nedmalloc性能比较如何  回复  更多评论   

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理