发个简单(易用)的内存池

2020-05-29 00:00:00 修改 专区 节点 调用 初始化

首先是把节点中的list和ptr改成 head 和tail了,为了方便理解,老炮给的意见
另外是,在节点中添加了一个raw_data指针,跟data在初始化时同时指向数据内存地址,这样做的目的是防止
用户在退出时忘记了free每一个node,如果采用以前的方式,整个内存池也就忘记Free了,虽然能够在退出时提示开发者,
修改后,能够在提示开发者的基础上释放未被释放的节点。
2010-06-01;
修改内容:其一,初始化N个节点时,为了保留栈的地址,须预留一个节点,因此多只能申请到N-1个,做了修改,我们在实际开辟时申请N+1个,这样对用户就透明了。其二:new_mem_node时。需要把当前栈顶的节点的data置空,当时写错了,搞成了栈底节点的data置空,虽然不影响功能,但逻辑错误,做了修改。



######################################################################
简单技术含量不高还敢说,易用就看各位的反响了 ,期待更好的改进建议。
自己根据实际工作需要写的,主要是为了省事,稍微提高点效率,省下了N多数组的声明和调用。
把多个类型的内存节点集合到一起统一管理,初始化时统一初始化,调用如下:

  1. init_mem_list (TYPE_S1, sizeof(s1_t), 100);
  2. init_mem_list (TYPE_S2, sizeof(s2_t), 200);

相关文章