malloc的最佳启发式

Ani*_*tti 4 algorithm malloc operating-system memory-management heuristics

考虑使用malloc()在碎片堆中分配x个字节的内存.假设堆有多个大小大于x字节的连续位置.

哪个是最好的(导致最少的堆浪费)启发式选择以下位置?

  1. 选择大于x字节的最小位置.
  2. 选择大于x字节的最大位置.

我的直觉是比x字节大的最小位置.我不确定哪种是最好的.

不,这不是任何转让问题.我正在读这个怎么做malloc()和free()工作?这看起来像是一个很好的跟进问题.

小智 5

在一个混合了不同大小的分配的通用堆中,然后在两个中我将分配放在可以容纳它的最小块中(以避免在我们需要之前减少我们可以分配的最大块的大小) .

还有其他实现堆的方法会使这个问题变得不那么重要(例如Doug Lea 所使用的流行dlmalloc - 它会将类似大小的块放在一起以提高速度并减少整体碎片).

哪种解决方案最好总是归结为应用程序执行内存分配的方式.如果您事先知道应用程序模式,那么您应该能够在大小和速度上击败通用堆.