2012-11-17 106 views
0

在一個循環中,我在開始時分配一些內存(可能在Linux ARM上高達2-3k),在它上面工作,然後釋放它。由於循環有很多迭代,我想知道這樣的分配/釋放是否會碎裂堆,所以後續的「malloc」會失敗。堆碎片

僞代碼如下所示:

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

由於您一次又一次地分配相同的大小,並在兩者之間釋放它,您很可能會得到每個分配完全相同的塊。 –

回答

0

不,這是完全正常的。此外,堆分割開始成爲更多分配之後的一個問題 - 具有不同的大小。另外,如果您仍然擔心,只需在堆棧中使用alloca來進行分配,就像在循環中一樣。