用来在巨量对象情况下管理内存。为之取名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  :)