对象池的不解?
#include <boost/pool/object_pool.hpp>
using namespace boost;
using namespace std;
struct 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 _tmain(int argc, _TCHAR* argv[])
{
object_pool<demo_class> pl;//对象内存池
demo_class *p = pl.malloc();
assert(pl.is_from(p));
//p指向的内存未经过初始化
assert(p->a != 1 || p->b != 2 || p->c != 3);
p = pl.construct(7, 8, 9);//构造一个对象,可以传递参数
assert(p->a == 7);
object_pool<string> pls;//定义一个分配string对象的内存池
for (int iLoop = 0; iLoop < 10; ++iLoop)//连续分配大量string对象
{
string *ps = pls.construct("hello object_pool");
cout << *ps<<endl;
}
return 0;
}//所有创建的对象在这里都被正确析构,释放内存.