【问题标题】:dealing with memory fragmentation for a simulation of dynamic memory allocation处理内存碎片以模拟动态内存分配
【发布时间】:2013-12-24 10:54:39
【问题描述】:

我正在使用 C 中的固定大小的数组进行动态内存分配模拟,我想知道处理碎片的最佳方法。我的计划是将数组分成两部分,左边部分保留给小块,右边部分保留给大块。然后我会使用最合适的方法来找到可用的最小/最大内存块。是否有另一种更好的方法来避免碎片(您在整个阵列中有一堆可用的块,但一个不满足所需的空间)?

【问题讨论】:

  • 在这方面有很多的前期工作。仅memory management 上的维基百科页面就有几个回答这个问题的起点。

标签: c memory memory-management theory fragmentation


【解决方案1】:

最佳方法取决于您的程序(内存管理器的用户)的操作方式。如果使用模式是分配许多小碎片并经常删除它们,则不需要过于激进地进行碎片整理。在这种情况下,很少有大块用户会为碎片整理操作付费。同样,如果大块分配频繁,则更频繁地进行碎片整理可能是有意义的。但最好的策略(假设您仍然想自己推出)是以一种通用的、可调整的方式对其进行编程,然后根据实际程序运行来衡量性能影响(在碎片操作或其他方面)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-25
    • 2011-12-13
    • 2016-12-28
    • 1970-01-01
    • 2016-07-15
    • 2013-08-14
    • 2010-11-26
    • 2011-12-09
    相关资源
    最近更新 更多