c - 程序堆内存的碎片整理

标签 c

在 C 语言中,我理解碎片是指大部分内存被分配在不连续的 block 中,这使得大部分其他内存未分配,然后导致它在大多数情况下变得不可用。我仍然不清楚的是,为了对程序堆内存进行碎片整理,需要采取哪些必要的步骤?如果不小心或不正确,会导致什么问题?

最佳答案

问题在于更新所有指针以指向新的内存位置,并且在 C 等不安全/非托管语言中,无法确定是否将任何给定的内存块用作指针。如果你猜错了,下次使用时就会出现内存损坏。 (解决这个问题是为 C 构建垃圾收集器的子集。)

关于c - 程序堆内存的碎片整理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60199944/

相关文章:

在链接过程中可以解析库之间的弱符号吗?

c - 将文本行存储在数组中,C

c - 结构数组在最后一个索引处失败

c++ - 在控制台应用程序中包含 "help"消息的最佳方法是什么?

c - 有没有办法在 C 中传递这样的字符串?

c - 复制指针时出现段错误

c - C 查找某个字符在字符串中出现的次数

c - 在尝试编写 atoi 的递归版本时, itoa(n/10, s) 的含义是什么?为什么建议避免 static int i = 0?

c - 使用 Visual Studio Community 2015 在 Windows 上使用 PostgreSQL 构建 C 程序

c - 为什么 struct tm 中的 tm_year 成员相对于 1900 而不是 macosx 上 C 中的 1970?