0

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

伪代码如下所示:

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

1 回答 1

1

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

于 2012-11-17T11:14:31.050 回答