用來在巨量對象情況下管理內存。為之取名chunk allocator.
原理很簡單,一個chunk就是一個連續的“內存空閑區”,大小固定,包含有一批對象的存儲空間,如下:
template<typename T, int MAX> struct Chunk {
???union Block {
??????unsigned char e[sizeof(T)];???// 對象數據
??????Block* next;
???} data_[MAX];

???void init();
???void destroy();

???T* allocate(int num);
???void deallocate(T* p, int num);

???//...
};

然后在chunk allocator中有一個Chunk列表:
typedef Chunk<T,defautlSize> ChunkType;
typedef std::vector<ChunkType*> ChunkTableType;
ChunkTableType chunkTable_;
當一個Chunk中不夠分配一個連續區時,會向chunkTable_加入一個新的Chunk,并且向這個新的Chunk請求分配。

詳細的看文件里面,其本分配策略還有待改進,比如:記下最大可用連續區塊的大小,有可能的話把這樣的信息存儲在空閑區塊上,還可以使data_[MAX]保持首地址對齊,即機器字的n倍,使尋址操作加快。

希望有人找到bug后通知我,msn/mail: cyberzei@hotmail.com? :)