内存分配器的开销

时间:2011-01-02 23:25:16

标签: c++11

我一直在创建一个临时对象堆栈 - 主要是为了使用基于堆的STL结构,它实际上只有临时生命周期,但也有任何其他临时动态大小的分配。一个堆栈执行所有类型 - 存储在展开的链表中。

我来了一个对齐的裁剪器。我可以使用std::alignment_of<T>进行对齐,但这并不是很好,因为我需要对齐我要分配的 next 类型。现在,我只是以16的倍数任意调整每个对象的大小,据我所知,这是任何x86或x64类型的最大对齐。但是现在,我每个对象有两个内存开销指针,以及在我的向量中分配它们的成本,加上每个大小的成本都是16的倍数。

从好的方面来说,施工和销毁是快速可靠的。

这与常规运营商new / delete相比如何?而且,我可以运行什么样的测试套件?我对目前的进展感到非常满意,并且不想稍后发现它以某种令人讨厌的微妙方式被窃听,所以任何关于测试操作的建议都会很好。

1 个答案:

答案 0 :(得分:0)

这并没有真正回答您的问题,但Boost最近刚在最新版本中添加了memory pool库。

这可能不是你想要的,但有一个彻底的treatment of alignment可能会引发一个想法?如果文档不够,总会有源代码。