'C++/Boost'에 해당되는 글 1건

  1. 2014.09.19 Boost의 MemoryPool 편하게 작성을 하자

#include <stdio.h>
#include <iostream>
#include <vector>
#include <boost/pool/singleton_pool.hpp>
#include <boost/pool/pool_alloc.hpp>


template<typename T,  unsigned int NEXT_SIZE = 32U, unsigned int  MAX_POOL_SIZE = 0U>
class CMemoryPoolT
{
public:
     static void* operator new(size_t size)
     {
          return boost::singleton_pool<T,
               sizeof(T),
               boost::default_user_allocator_new_delete,
               boost::details::pool::default_mutex,
               NEXT_SIZE,
               MAX_POOL_SIZE>::malloc();
     }

     static void operator delete(void* p)
     {
          boost::singleton_pool<T,
               sizeof(T),
               boost::default_user_allocator_new_delete,
               boost::details::pool::default_mutex,
               NEXT_SIZE,
               MAX_POOL_SIZE>::free(p);
     }
};


class CMemoryPoolTest  :public CMemoryPoolT<CMemoryPoolTest>
{
public:
     char Dumy[124] ;
};


int _tmain(int argc, _TCHAR* argv[])
{
     using std::vector ;

     CMemoryPoolTest *p = new CMemoryPoolTest() ;

     delete p ;

     printf("Using MemoryPool... \n") ;


     return 0;
}


위와 같이 작성을 하면 아주 편하게 사용할수 있다

 

메모리 풀을 적용하고 싶은 클래스에 CMemoryPoolT을 상속해주고  

템플릿 명시를 자기 클래스 이름으로 적어 놓는다.

 

명시를 하는 이유는 A라는 클래스가 있고 B라는 클래스 있다고 치면 A라는 클래스와 B라는 클래스를 다른 클래스이므로 메모리를 관리 할때 따로 관리 하는게 편하다.

 

따로 관리를 하기위해 태그를 붙이는 거라 생각을 하면 쉽다.

'C++ > Boost' 카테고리의 다른 글

Boost의 MemoryPool 편하게 작성을 하자  (0) 2014.09.19
Posted by IT아지크
이전버튼 1 이전버튼

블로그 이미지
IT아지크

공지사항

Yesterday36
Today1
Total37,126

달력

 « |  » 2018.12
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

최근에 받은 트랙백

글 보관함