Boost.Pool
프로그래밍 언어/boost2015. 4. 28. 10:58
boost::pool
일반적 풀 인터페이스
boost::malloc()
새로운 메모리 할당
boost::pool::free
명시적으로 메모리 할당 해제 (이 처리를 하지 않아도 자동으로 free됨)
1 2 3 4 5 6 7 8 9 10 11 12 | // pool { // sizeof(int) 바이트 전용 할당자 boost::pool<> p(sizeof(int)); // 풀 할당 int* a = (int*)p.malloc(); *a = 10; // 명시적으로 메모리 해제 p.free(a); } |
boost::object_pool
오브젝트(객체) 풀 인터페이스
boost::construct()
새로운 메모리 할당
boost::object_pool::destroy()
명시적으로 소멸자 호출 (이 처리를 하지 않아도 자동으로 소멸자 호출)
1 2 3 4 5 6 7 8 9 10 11 12 | // object_pool { boost::object_pool<object> op; // 풀에서 객체 할당 object* o1 = op.construct("test1"); object* o2 = op.construct("test2"); // 명시적으로 해제 op.destroy(o1); // op.destroy(o2); } |
boost::singleton_pool
정적 기반 thread safe singleton 풀 인터페이스
boost::singleton_pool::malloc()
새로운 메모리 할당
boost::singleton_pool::::free
명시적으로 메모리 할당 해제
boost::singleton_pool::release_memory()
boost::singleton_pool::purge_memory()
할당받은 모든 메모리들 해제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // singleton_pool { typedef boost::singleton_pool<object, sizeof(object)> sp; // 풀에서 할당 object *so1 = (object*)sp::malloc(); // 명시적으로 해제 sp::free(so1); // 모든 할당 메모리 해제 sp::release_memory(); sp::purge_memory(); } |
boost::pool_alloc
singleton_pool을 기반으로 작성된 편리한 할당자
boost::singleton_pool::release_memory()
boost::singleton_pool::purge_memory()
할당받은 모든 메모리들 해제 (자동으로 해제하지 않음으로 반드시 필요)
1 2 3 4 5 6 7 8 9 10 11 12 13 | // pool_alloc { // vector 컨테이너에서 할당자 클래스 사용 std::vector<int, boost::pool_allocator<object*>> v; for (int i = 0; i < 1000; ++i) v.push_back(i); v.clear(); // 모든 할당 메모리 해제 boost::singleton_pool<boost::pool_allocator_tag, sizeof(int)>::release_memory(); boost::singleton_pool<boost::pool_allocator_tag, sizeof(int)>::purge_memory(); } |
'프로그래밍 언어 > boost' 카테고리의 다른 글
Boost.Atomic (0) | 2015.04.30 |
---|---|
Boost.ScopeExit (0) | 2015.04.28 |
Boost.Thread (0) | 2015.04.28 |
shared_ptr 성능 이슈 및 테스트 (0) | 2014.04.02 |
Boost.Lexical_cast (0) | 2014.04.02 |