boost准模板库内存管理中pool和object_pool的使用
来源:互联网 发布:软件著作权一般几个人 编辑:程序博客网 时间:2024/06/05 09:03
首先,在写程序之前,必须修改一个问题,要不然,无法链接:
boost安装目录:D:\boost。
找到D:\boost\boost_1_55_0\include\boost-1_55\boost\system\error_code.hpp。
在error_code.hpp文件开头添加宏定义:#define BOOST_ERROR_CODE_HEADER_ONLY。
然后,下面就是我们的pool的示例:
#define BOOST_ALL_NO_LIB#include<boost/pool/object_pool.hpp>#include<iostream>//object_pool继承pool,但是是保护继承,有些操作类似,单有些pool的接口无法使用using namespace std;using namespace boost;class demo_class{public:int a,b,c;demo_class(int x=1,int y=2,int z=3):a(x),b(y),c(z){};};int main(){object_pool<demo_class> p1;//创建对象内存池demo_class *p=p1.malloc();//分配一个原始内存块cout<<p1.is_from(p)<<endl;//p指向的内存未经初始化cout<<(p->a!=1)<<" "<<(p->b!=2)<<" "<<(p->c!=3)<<endl;demo_class *pa=p1.construct(4,5,6);//构造一个对象,可以传递参数cout<<(pa->a==4 && pa->b==5 && pa->c==6)<<endl;object_pool<string> pls;//定义一个分配string对象的内存池for(int i=0;i<10;i++){string *ps=pls.construct("Hello object_pool");//先调用分配内存,再cout<<*ps<<endl;//连续分配大量的string对象}p1.destroy(p);//手工析构和释放内存,然后使用传递的参数调用构造函数getchar();}
接着是object_pool的示例:
#define BOOST_ALL_NO_LIB#include<boost/pool/object_pool.hpp>#include<iostream>//object_pool继承pool,但是是保护继承,有些操作类似,单有些pool的接口无法使用using namespace std;using namespace boost;class demo_class{public:int a,b,c;demo_class(int x=1,int y=2,int z=3):a(x),b(y),c(z){};};int main(){object_pool<demo_class> p1;//创建对象内存池demo_class *p=p1.malloc();//分配一个原始内存块cout<<p1.is_from(p)<<endl;//p指向的内存未经初始化cout<<(p->a!=1)<<" "<<(p->b!=2)<<" "<<(p->c!=3)<<endl;demo_class *pa=p1.construct(4,5,6);//构造一个对象,可以传递参数cout<<(pa->a==4 && pa->b==5 && pa->c==6)<<endl;object_pool<string> pls;//定义一个分配string对象的内存池for(int i=0;i<10;i++){string *ps=pls.construct("Hello object_pool");//先调用分配内存,再cout<<*ps<<endl;//连续分配大量的string对象}p1.destroy(p);//手工析构和释放内存,然后使用传递的参数调用构造函数getchar();}
程序的记过很简单,就不在此处列出来了。
0 2
- boost准模板库内存管理中pool和object_pool的使用
- boost的pool和object_pool
- boost pool, object_pool实现
- boost库内存池使用
- Boost库学习随记四 pool内存池使用示例:pool、object_pool、singleton_pool、pool_alloc内存池
- com库内存管理
- BOOST内存管理(一) --- boost::object_pool
- C++内存管理变革(4): boost::object_pool
- C++内存管理变革(4): boost::object_pool
- 标准模板库内存释放问题
- C++内存管理变革(4):boost::object_pool与gc allocator
- C++内存管理变革(4):boost::object_pool与gc allocator
- C++内存管理变革(4):boost::object_pool与gc allocator
- C++内存管理变革(4):boost::object_pool与gc allocator
- C++内存管理变革(4):boost::object_pool与gc allocator
- C++内存管理变革(4):boost::object_pool与gc allocator
- Boost库之pool的使用
- LINUX对内存的管理和使用
- printf 格式输出代码大全
- android手机主流机型
- 经典语录
- C++ STL 容器技术 之 deque双端队列容器
- NFC高级汇总
- boost准模板库内存管理中pool和object_pool的使用
- FPGA和ARM通过485通讯有点问题
- 区别wchar_t,char,WCHAR
- Android入门第七篇之ListView
- 类和方法
- mini2440 SPI驱动移植
- CODE IED
- poj1256(全排列)
- golang的pprof支持