在 C 语言中,我理解碎片是指大部分内存被分配在不连续的 block 中,这使得大部分其他内存未分配,然后导致它在大多数情况下变得不可用。我仍然不清楚的是,为了对程序堆内存进行碎片整理,需要采取哪些必要的步骤?如果不小心或不正确,会导致什么问题?
最佳答案
问题在于更新所有指针以指向新的内存位置,并且在 C 等不安全/非托管语言中,无法确定是否将任何给定的内存块用作指针。如果你猜错了,下次使用时就会出现内存损坏。 (解决这个问题是为 C 构建垃圾收集器的子集。)
关于c - 程序堆内存的碎片整理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60199944/