功能:
1.C实现的简单的,可扩展的内存chunk管理器;
2.支持Top, Push, Pop几种简单的操作;
3.由于一个内存chunk可以有多个元素,不同的chunk可以大小不等;
优点:
1.可以将其扩展为一个简单的内存管理器,实现分配和释放的cache机制;
2.可以将其作为双向队列的内部的容器类;
3.用这个chunk存储大量的简单对象(支持FIFO)效率远比用双向链表高(速度),同时更节约内存(双向链表一个node,需要两个指针维护);
代码如下,compile and test in visual studio 2005:
#ifndef _CHUNK_LIST_H_
#define _CHUNK_LIST_H_
#define INIT_ELEM_COUNT 20
typedef struct tagChunk
{
size_t cur;
size_t end;
tagChunk* next;
tagChunk* prev;
char buf[0];
}Chunk, *pChunk;
void InitChunk( pChunk* newChk, size_t elemSize, size_t elemCount )
{
pChunk chk = *newChk;
chk = (pChunk)malloc(elemCount * elemSize + sizeof(Chunk))