一种简单定长管理的内存池实现
借鉴ucos消息队列中的实现,对内存池只提供信息的管理头部,由用户管理内存的分配与释放。 借用了STL中的管理思路 typedef union object_t { union object_t *next; //下一个对象 char data[1]; }object_t; 注意其为union类型,next和data复用 typedef struct ares_block { size_t object_size; //单个对象的大小 size_t block_size; //占用的空间总数 size_t count; //剩余有多少个对象 object_t * free_list; //空闲的对象块 char *data; //实际指向缓冲区位置 struct list_head list_block;//多个内存块 }mem_block_t; 基本的管理块 mem_block_t的接口函数。 void memblock_init(mem_block_t *block,size_t object_size,size_t buf_len,char *data); void memblock_destroy(mem_block_t *block); char *memblock_alloc(mem_block_t *block,size_t object_size); void