1 #ifndef _MEMORY_POOL_H_ 
    2 #define _MEMORY_POOL_H_ 
    9 static const int DEFAULT_EXPAND_SIZE = 10000;
 
   11 template <
class T, std::
size_t Size = DEFAULT_EXPAND_SIZE>
 
   20     for (nextPtr = next; nextPtr != 0; nextPtr = next) {
 
   26   void* alloc(std::size_t) {
 
   27     if (!next) expandFreeList(Size);
 
   33   void free(
void* freePtr) {
 
   40   void expandFreeList(
int howMany) {
 
   47     for (
int i = 0; i < howMany; ++i) {
 
   49       runner = runner->next;
 
   58 template <
class T, std::
size_t Size = DEFAULT_EXPAND_SIZE>
 
   61   void* 
operator new(std::size_t size) { 
return pool->alloc(size); }
 
   62   void operator delete(
void* deletePtr, std::size_t) { pool->free(deletePtr); }
 
   63   void* 
operator new[](std::size_t size) { 
return pool->alloc(size); }
 
   64   void operator delete[](
void* deletePtr, std::size_t) { pool->free(deletePtr); }
 
   69   static std::auto_ptr<MemoryPool<T, Size> > pool;
 
   72 template <
class T, std::
size_t Size = DEFAULT_EXPAND_SIZE>
 
   79     T* allocPtr = 
static_cast<T*
>(pool->alloc(
sizeof(T)));
 
   80     return static_cast<T*
>(
new(allocPtr) T());
 
   83   void poolDelete(T* deletePtr) {
 
   85     pool->free(deletePtr);
 
   89   std::auto_ptr<MemoryPool<T, Size> > pool;
 
  103   void* poolAlloc(std::size_t size) {
 
  104     void* allocPtr = NULL;
 
  105          if (size < 16) { allocPtr = mp16.alloc(size); }
 
  106     else if (size < 32) { allocPtr = mp32.alloc(size); }
 
  107     else if (size < 64) { allocPtr = mp64.alloc(size); }
 
  108     else if (size < 128) { allocPtr = mp128.alloc(size); }
 
  109     else if (size < 256) { allocPtr = mp256.alloc(size); }
 
  113   void poolFree(
void* freePtr, std::size_t size) {
 
  114          if (size < 16) { mp16.free(freePtr); }
 
  115     else if (size < 32) { mp32.free(freePtr); }
 
  116     else if (size < 64) { mp64.free(freePtr); }
 
  117     else if (size < 128) { mp128.free(freePtr); }
 
  118     else if (size < 256) { mp256.free(freePtr); }
 
  129 template <
class T, std::
size_t Size>
 
Definition: MemoryPool.h:98
Definition: MemoryPool.h:59
Definition: MemoryPool.h:95
Definition: MemoryPool.h:73
Definition: MemoryPool.h:96
Definition: MemoryPool.h:92
Definition: MemoryPool.h:12
Definition: MemoryPool.h:94
Definition: MemoryPool.h:93