我为堆分配编写了一个c / c ++内存管理器(重载了new / delete和malloc / realloc / free,基于Doug Lea的malloc,但设计为无需等待),并且似乎在碎片方面遇到了一些麻烦。是否有任何好的资源可以详细说明通过经理避免分裂的好策略?
请注意,我无法重新安排已经分配的内存(不使用带有GUID的智能指针),并且重新编写系统以使用池而不是堆分配是不可行的。
谢谢,
格兰特
答案 0 :(得分:2)
你可能希望从jemalloc(http://people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf)获得一些灵感 - 由于其反碎片功能,这个分配器在新的Firefox中被明确使用。
答案 1 :(得分:0)
看看像glibc这样的成熟项目是如何做到的。
快速Google找到this,其中包含一堆参考文献。