gpt4 book ai didi

c++ - 可以在 Knuth 堆上进行碎片整理吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:00:17 26 4
gpt4 key购买 nike

我正在考虑是否可以消除 Knuth 内存堆上的外部碎片?在尝试解决这个问题之前,我不确定我们是否可以在堆上移动 block 。如果我们可以移动 block ,那么我相信解决外部碎片是微不足道的。

我对这个问题做了一些思考。如果我只是将所有内容复制到新位置(虚拟地址),然后将以前指向该 block 的所有指针更新为新地址,会有什么问题?我认为这可能是一个正确的解决方案,但我不是很有信心。

有人知道这个问题吗?

提前致谢。

最佳答案

这听起来不错——您只需要在复制之前检查您是否能够实际分配足够的内存(或者存在足够的预分配内存)。除此之外,我想不出你有什么问题。似乎继续更新所有指针会相当慢——如果您需要扫描整个堆,这对于您要更新的每个 block 来说不是 O(n) 吗?

关于c++ - 可以在 Knuth 堆上进行碎片整理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9070199/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com