c - 堆是否碎片化

标签 c heap-memory

在一个循环中,我在开始时分配一些内存(在 Linux ARM 上可能最多 2-3k),对其进行处理,然后释放它。由于循环有很多迭代,我想知道这样的分配/释放是否会使堆碎片化,因此后续的“malloc”将会失败。

伪代码如下所示:

...
while(...){
 list=malloc(N);
 // do some work with list
 free(list);
}

最佳答案

不,那很好。此外,在多次不同大小的分配之后,堆碎片也开始成为一个问题。 另外,如果您仍然担心,只需在堆栈上使用 alloca 进行分配,就像在循环中一样。

关于c - 堆是否碎片化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13429956/

相关文章:

c - 如何知道孤儿进程创建时传递了哪些信号?

c - 这个 an + bnlog2(n) + cn3 = k,在这里为更大的输入找到 n 不能正常工作

java - Java中位数的最大堆和最小堆实现

c - 堆溢出 - 堆的结构

c - calloc() 替换中的内存对齐问题?

Android:如何在运行时增加堆大小?

c - C sine(x) 近似误差

c - 为什么 OpenMP 禁止在 "#pragma omp parallel"中使用 lastprivate?

c - Valgrind 缩进(和低于主要)

c++ - 如何确定一个对象是否应该在堆栈上?