在一个循环中,我在开始时分配一些内存(在Linux ARM上可能高达2-3k),处理它然后解除分配它。由于循环有很多次迭代,我想知道这样的分配/释放是否会破坏堆,以便随后的“malloc”失败。
伪代码如下所示:
...
while(...){
list=malloc(N);
// do some work with list
free(list);
}
答案 0 :(得分:0)
不,那很好。在更多分配之后,堆碎片开始成为一个问题 - 不同的大小。 此外,如果您仍然担心,只需在堆栈上使用alloca进行循环中的分配。