XMemPool(ulong chunkSize)
| 原型 | XMemPool(ulong chunkSize) |
| 描述 | 在变长模式下构造XMemPool对象 |
| 参数 | [i]ulong ulSize:chunk的大小,其范围[MIN_CHUNK_SIZE, MAX_CHUNK_SIZE] |
| 返回值 | 无 |
XMemPool(ulong unitCnt,ulong unitSize)
| 原型 | XMemPool(ulong unitCnt,ulong unitSize) |
| 描述 | 在定长模式下构造XMemPool对象 |
| 参数 | [i]ulong ulUnitCount:每个内存块含有的Block的个数,其范围[1, MAX_CHUNK_SIZE/MIN_BLOCK_SIZE – 2] [i]ulong ulUnitSize [in]:每个Block所占用的内存大小,其范围[1, MAX_BLOCK_SIZE] |
| 返回值 | 无 |
void * alloc(ulong size)
| 原型 | void * alloc(ulong size) |
| 描述 | 变长模式下从池中分配大小为size的内存,定长模式下分配一个unit |
| 参数 | [i]ulong ulUnitCount:每个内存块含有的Block的个数,其范围[1, MAX_CHUNK_SIZE/MIN_BLOCK_SIZE – 2] |
| 返回值 | 若分配成功则返回分配的内存地址,若失败则返回NULL |
void * allocUnit()
| 原型 | void * allocUnit() |
| 描述 | 从内存池中分配一个unit的内存 |
| 参数 | 无 |
| 返回值 | 在变长模式下返回NULL,在定长模式下若成功分配返回unit内存地址,若失败返回NULL |
void release(void * p,ulong size = 0)
| 原型 | void release(void * p,ulong size = 0) |
| 描述 | 释放指定的内存,如果该内存是从内存池中申请的,则返回给内存池,添加到相应的RBL中;如果该内存是从系统申请,则返回给系统。 |
| 参数 | [i]void * p : 需要释放的内存地址 [i]ulong size : 需要释放的内存大小,取值下限为1 |
| 返回值 | 无 |
void dumpPool(const char * fname)
| 原型 | void dumpPool(const char * fname) |
| 描述 | 将内存内容写出到名字为fname的文件中 |
| 参数 | [i]const char * fname:用于dump的文件路径名 |
| 返回值 | 无 |
void reset()
| 原型 | void reset() |
| 描述 | 将内存池置于初始状态(仅有一个未分配的Chunk) |
| 参数 | 无 |
| 返回值 | 无 |
bool isInPool(void * p)
| 原型 | bool isInPool(void * p) |
| 描述 | 判断指定地址是否在内存池中 |
| 参数 | [i]void * p : 需要判断的内存地址 |
| 返回值 | 若在内存池中返回true,否则返回false |
XMemPool(XMemPool &)
| 原型 | XMemPool(XMemPool &) |
| 描述 | 禁止复制构造 |
| 参数 | [i]XMemPool &:另外一个XMemPool的引用 |
| 返回值 | 无 |
void operator = (XMemPool &)
| 原型 | void operator = (XMemPool &) |
| 描述 | 禁止拷贝构造 |
| 参数 | [i]XMemPool &:另外一个XMemPool的引用 |
| 返回值 | 无 |
void * addChunk()
| 原型 | void * addChunk() |
| 描述 | 从系统中申请一个chunk添加到内存池中 |
| 参数 | 无 |
| 返回值 | 若申请成功则返回该chunk的地址,否则返回NULL |
void addToRBL(void * p, ulong size)
| 原型 | void addToRBL(void * p, ulong size) |
| 描述 | 在变长模式下将大小为size的内存p放入到内存池RBL中 |
| 参数 | [i]void * p : 需要放回的内存 [i]ulong ulSize : 放回的内存大小 |
| 返回值 | 无 |
void addUnitToRBL(void *p)
| 原型 | void addUnitToRBL(void *p) |
| 描述 | 在定长模式下将内存p放入到内存池RBL中 |
| 参数 | [i]void * p : 需要放回的Unit |
| 返回值 | 无 |
void * allocFromRBL(ulong size)
| 原型 | void * allocFromRBL(ulong size) |
| 描述 | 在变长模式下从内存池的RBL中分配大小为ulSize的内存 |
| 参数 | [i]ulong ulSize : 需要分配的内存大小 |
| 返回值 | 若在可重分配内存块中找到匹配的Block则返回该Block的内存地址,否则返回NULL |