And*_*rew 20 c c++ memory-management heap-fragmentation
有没有好的内存碎片分析器?(linux gcc版本会很好).Valgrind无法对此进行分析,因为它使用自定义malloc/free函数.
谢谢,安德鲁
我很难理解您可能找到的任何工具如何理解自定义内存管理的段数据结构。您也许能够获得繁忙的发行版(挂钩到 malloc/free),但免费发行版(本质上是碎片)似乎悬而未决。
那么为什么不将繁忙/空闲统计信息/直方图添加到您的自定义内存管理器中呢?如果 bin 按与 log2(size) 成比例的内容进行索引,则保留这些统计信息的时间复杂度为 O(1),因为当您拆分和合并时,您知道大小,并且可以使用与 log2(size) 成比例的索引通过直接查找来找到 bin
例如直方图箱间隔
[2^n,2^(n+1) ) ...
(例如,如果您想要更精细的 bin,请使用对数基数平方根 2(大小),可以使用 x86 上的 4 个整数指令来计算 [位扫描、比较、设置、添加])
另一组可使用的合理 bin 大小是以下开区间
[2^n, 2^n+2^(n-1) ),[2^n+2^(n-1),2^(n+1) )...
再次可以轻松计算[位扫描、移位和相加])