c++内存管理


  内存分配, 不可一层不变

  C++明天, 对绝大少数顺序来说, 通用的内存分配方法--此处指代分配算符(allocator:即malloc或new), 已到达了理想的速度及满足了低碎片率的要求, 然而, 在内存分配领域, 一丁点的信息都值得探讨很久, 某些特定顺序关于分配模式的信息, 将有助于完成专门的分配算符, 可显著地提矮小少数高功用要求顺序的功用底线。 有时, 当通用内存分配算符平均耗费几百个时钟周期时, 一个良好的自定义内存分配算符能够只需求不到半打的周期。

  这就是为什么大少数高功用、高要求的应用顺序(如gcc、apache、microsoftsqlserver), 都有着它们本人的内存分配算符。 也许, 把这些专门的内存分配算符归纳起来, 放进一个库中, 是个不错的想法, 但是, 你的顺序能够有不同的分配模式, 其需求另外的内存分配算符, 那怎样办呢?

  等等, 还有呢, 假如我们设计了一种特殊用途的内存分配算符, 就可以不时开展下去, 由此可从中筛选出一些, 来组成一个通用目的的内存分配算符, 假如此通用分配算符优于现有的通用分配算符,诺依曼记忆枕 那么此项设计就是有效及适用的。

  下面的示例使用了emery小组的库--heaplayers(heaplayers/), 为了定义可配置的分配算符, 其中使用了mixins(在c++社区中, 也被称为coplien递归模式):经过参数化的基来定义类, 每一层中只定义两个成员函数, malloc和free:

posted on 2011-05-29 08:47  jiyizhen3721  阅读(186)  评论(0编辑  收藏  举报