内存分配算法

时间:2013-02-20 01:49:57

标签: algorithm memory-management data-structures

我们如何实现分配&的数据结构?使用以下约束跟踪内存

  1. 在O(1)
  2. 中分配和释放内存
  3. Min fragmentation。
  4. 假设你有1 KB的内存单位。 您需要分配2kB - 64 KB内存

    例如

    A-1

    B-1

    C-4

    D-2

    0 1 2 3 4 5 6 7 8 9 10

    x A x B C C C D D x

    如果我们在释放时可用的最小地址分配内存(如上面的x所示)内存,我们将会出现碎片。所以在上面的例子中,即使3个单元是空闲的,我们也无法分配3个连续单元的内存。

1 个答案:

答案 0 :(得分:0)

搜索“好友系统”或“好友内存分配”。这可能是你会发现的最佳解决方案。虽然,它不是纯粹的O(1),它会受到一些内部碎片的影响,外部碎片化也会发生......

使用扩充树可以完全避免内部碎片,但操作需要O(log N)时间。你仍然有外部碎片。