23.内存池
1 #include <iostream> 2 //基本数据类型内存池 3 #include <boost/pool/pool.hpp> 4 //类类型内存池 5 #include <boost/pool/object_pool.hpp> 6 //单例模式 7 #include <boost/pool/singleton_pool.hpp> 8 using namespace std; 9 using namespace boost; 10 11 void main1() 12 { 13 //开辟一段内存,五百个字节 14 pool<>p1(500); 15 //开辟内存 16 int *p = (int *)p1.malloc(); 17 *p = 4; 18 cout << *p << endl; 19 cin.get(); 20 } 21 22 class myclass 23 { 24 public: 25 myclass() 26 { 27 cout << "hello" << endl; 28 } 29 }; 30 31 32 void main2() 33 { 34 object_pool<myclass> p1; 35 //需要手动调用构造 36 myclass *pmy = p1.malloc(); 37 //调用构造函数 38 pmy = p1.construct(); 39 cin.get(); 40 } 41 42 struct pool_tag 43 { 44 45 }; 46 47 void main() 48 { 49 //单例模式,只能装一个对象 50 typedef singleton_pool<pool_tag, sizeof(int)> spl; 51 int *p = (int *)spl::malloc(); 52 //静态函数,释放内存 53 spl::release_memory(); 54 55 cin.get(); 56 }