在一个循环中,我在开始时分配一些内存(在 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/