Modern C++ design第四章

本章介绍了一个小型对象分配器. 

因为过多的小型对象( 例如仿函数, 智能指针)的分配释放, 会导致内存碎片, 内存耗费过多, 分配速度过慢等问题。 故而在需要大量小型对象的系统中, 一个分配器是非常必要的。

本章介绍的这个分配策略共由四层组成, 第一层是Chunk , 一块大内存。 一个Chunk可以分配最多255个小型对象。 Chunk内的可用内存, 通过一个链表连接起来。

第二层是FixedAllocator. 这层封装了Chunk的行为,由一个Chunk的数组构成(vector). 当一个Chunk满了之后,会添加新的Chunk。FixedAllocator定义了Chunk的大小。

第三层SmallObjAllocator由数个大小不同的FixedAllocator组成。 以为不同大小的小对象分配内存。 同时, 如果分配的内存大于某个特定值,就将分配策略转出,例如调用::new.

第四层SmallObject. 将SmallObjAllocator封装为一个Singleton.  任何需要应用这个分配策略的对象只需要从SmallObject派生, 就可以应用SmallObject定义的new, delete.  达到使用这个分配策略的目的。  利用第一章提供的policy的办法, SmallObject还继承了线程策略,故而可以实现各种不同的线程要求。

总之, 这章介绍了一个非常棒的内存分配器, 当需要自己写一个内存分配器的时候, 这将是一个非常不错的参考, 考虑到了方方面面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值