我正在使用C中固定大小的数组进行动态内存分配模拟,我想知道处理碎片的最佳方法。我的计划是将数组拆分为两部分,左部分保留用于小块,右部分保留用于大块。然后,我将使用最适合的方法来查找可用的最小/最大内存块。是否有另一种更好的方法来避免碎片(在整个阵列中有一堆可用的块,但是一个块不能满足所需的空间)?
答案 0 :(得分:1)
最佳方法取决于程序的操作模式(内存管理器的用户)。如果使用模式是分配许多小片段并经常删除它们,则不需要过度积极地进行碎片整理。在这种情况下,罕见的大块用户将支付碎片整理操作。同样,如果频繁进行大块分配,则更频繁地进行碎片整理可能是有意义的。但是最好的策略(假设您仍然想要自己动手)是以一般的可调整方式对其进行编程,然后根据实际程序运行来衡量性能影响(在碎片操作或其他方面)。