内存池(MemPool)

话说内存池貌似是一个比较深刻的话题,每当想去尝试一下,然而深感自己积累不足;今天终于有积累,有时间会会内存池了。之前看过STL中Alloc,即空间配置器的设计思想以及实现;后续看过ACE的Block,都是关于内存池的不同见解。

 

今天有空实现了一个内存池,按照STL的空间空配置器的思想实现,就是用纵横链表管理内存块。横向的链表管理不同大小的内存块,纵向链表管理相同大小的内存块,为了不浪费内存,管理内存块的节点使用union,对外则是可以使用的内存的地址,对内则是指向下一个可用的内存块。

 

使用内存池的优点是显而易见的:

1.避免频繁的向系统申请释放造成内存碎片;

2.避免了每次使用内存都需要向系统申请(new或者malloc,每次new或者malloc,效率是低下的);

3.避免内存泄漏(自己管理内存的申请与释放,可以使用资源管理对象的思想)

 

缺点:

1.笔者实现的这个内存池,只有向系统申请,没有向系统归还;也就是说,内存占用到了一定阶段就会稳定,就算程序这时真正没有使用那么多内存,但是还会占用较多内存;

 

 

MemPool下载

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值