// testPool.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <boost/pool/object_pool.hpp> #include <boost/pool/object_pool.hpp> #include <boost/pool/pool.hpp> using namespace std; using namespace boost; class member { public: byte bc; int *ia; int ib[100]; public: member() { } }; typedef member* pMember; //2 object_pool<member> m_pool2; //1 pool<>m_pool(sizeof(member)); #define max 1000 int _tmain(int argc, _TCHAR* argv[]) { DWORD t1 = GetTickCount(); pMember m[max]; //1 for (int i=0;i<max;i++) { m[i] = (pMember)m_pool.malloc(); } for (int i=0;i<max;i++) { m_pool.free(m[i]); } printf("time1 val=%d/n",GetTickCount()-t1);//-----------0ms //2 t1 = GetTickCount(); for (int i=0;i<max;i++) { m[i] = (pMember)m_pool2.malloc(); //m[i] = m_pool2.construct(); } for (int i=0;i<max;i++) { m_pool2.free(m[i]); } printf("time2 val=%d/n",GetTickCount()-t1);//-----------60-80ms system("pause"); return 0; } object_pool的内存释放方面确实落后,难怪有人说object_pool是boost pool中的败笔。