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 に答える