本帖最后由 duanjigang 于 2010-06-01 10:45 编辑![]() ![]() 修改历史: 2010-02-01: 首先是把节点中的list和ptr改成 head 和tail了,为了方便理解,老炮给的意见 另外是,在节点中添加了一个raw_data指针,跟data在初始化时同时指向数据内存地址,这样做的目的是防止 用户在退出时忘记了free每一个node,如果采用以前的方式,整个内存池也就忘记Free了,虽然能够在退出时提示开发者, 修改后,能够在提示开发者的基础上释放未被释放的节点。 2010-06-01; 修改内容:其一,初始化N个节点时,为了保留栈的地址,须预留一个节点,因此最多只能申请到N-1个,做了修改,我们在实际开辟时申请N+1个,这样对用户就透明了。其二:new_mem_node时。需要把当前栈顶的节点的data置空,当时写错了,搞成了栈底节点的data置空,虽然不影响功能,但逻辑错误,做了修改。 ###################################################################### 简单技术含量不高还敢说,易用就看各位的反响了 ![]() 自己根据实际工作需要写的,主要是为了省事,稍微提高点效率,省下了N多数组的声明和调用。 把多个类型的内存节点集合到一起统一管理,初始化时统一初始化,调用如下: 退出时统一释放,调用如下: 运行过程中调用 调用封装的new和free函数 个人感觉还是比较方便的,效率相对还比较高,首先根据类型哈希到对应的链表上,然后每个链表就是一个栈,弹栈或者压栈就是new和Free操作。 一个简单的使用例子如下: |
发个简单(易用)的内存池
最新推荐文章于 2024-04-23 10:08:40 发布