object_pool是用于类对象的内存池,他的功能与pool类似,但他会在析构时对所有已经分配的内存块调用析构函数,从而正确的释放资源。
#include <boost/pool/object_pool.hpp>
using namespace boost;
struct demoClass
{
public :
int a,b,c;
demoClass(int x=1,int y=2,int z=3):a(x),b(y),c(z){}
};
int main()
{
object_pool<demoClass> p1;//定义一个对象内存池
auto p=p1.mallco();
assert(p1.is_from(p));
assert(p->a!=1 || p->b!=2 || p->c!=3)
p=p1.construct(7,8,9);
assert(p->a == 7);
object_pool<string> pls;//定义分配一个string内存池
for (int i=0; i<10; i++)
{
string *ps=pls.construct("hello world");
cout<< *ps<<endl;
}
} //所有创建的对象在这里都可以被正确析构并且释放内存