内存池
object_pool
object_pool提供了一个模板类型的提升,继承自pool类,object_pool<T , User
Allocator>可以用于快速和有效的分配对象类型T,类定义如下:
namespace boost { template<typename T, typename UserAllocator> class object_pool; }
分配对象类型源码解析:
public:
typedef T element_type; //!< ElementType
element_type * construct()
{
element_type * const ret = (malloc)();
if (ret == 0)
return ret;
try { new (ret) element_type(); }
catch (...) { (free)(ret); throw; }
return ret;
}
使用new (ret) element_type()在已分配内存上构建T类对象,并使用类对象构造函数初始化,退出作用域类对象自动析构。
使用示例:
#include <iostream>
#include "boost/pool/object_pool.hpp"
class test
{
public:
test(void)
{
std::cout<<"construct"<<std::endl;
}
~test(void)
{
std::cout<<"destruct"<<std::endl;
}
};
int main()
{
boost::object_pool<test>p;
test * const t=p.construct();
return 0;
}
输出结果:
construct
destruct