boost准模板库内存管理中pool和object_pool的使用

首先,在敲代码之前,必须改动一个问题。要不然,无法链接:

 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();
}

程序的记过非常easy,就不在此处列出来了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值