最近写了一个C++内存池类,大家一起来鉴赏一下:
MemoryPool.h文件
#include#include #include #define MEMPOOL_ALIGNMENT 8 //对齐长度 //内存块,每个内存块管理一大块内存,包括许多分配单元 class MemoryBlock { public: MemoryBlock (int nUnitSize,int nCount); ~MemoryBlock() { printf("~MemoryBlock()n"); }; void* operator new (size_t t, int nUnitSize,int nCount); int nSize; //该内存块的大小,以字节为单位 int nFree; //该内存块还有多少可分配的单元 int nFirst; //当前可用单元的序号,从0开始 MemoryBlock* pNext; //指向下一个内存块 char aData[1]; //用于标记分配单元开始的位置,分配单元从aData的位置开始 }; class MemoryPool { public: MemoryPool (int _nUnitSize, int _nGrowSize = 3, int _nInitCount = 3);