在自定义内存管理器中对抗碎片

时间:2009-02-24 06:18:23

标签: c++ memory-management heap-fragmentation

我为堆分配编写了一个c / c ++内存管理器(重载了new / delete和malloc / realloc / free,基于Doug Lea的malloc,但设计为无需等待),并且似乎在碎片方面遇到了一些麻烦。是否有任何好的资源可以详细说明通过经理避免分裂的好策略?

请注意,我无法重新安排已经分配的内存(不使用带有GUID的智能指针),并且重新编写系统以使用池而不是堆分配是不可行的。

谢谢,
格兰特

2 个答案:

答案 0 :(得分:2)

你可能希望从jemalloc(http://people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf)获得一些灵感 - 由于其反碎片功能,这个分配器在新的Firefox中被明确使用。

答案 1 :(得分:0)

看看像glibc这样的成熟项目是如何做到的。

快速Google找到this,其中包含一堆参考文献。