6

この質問でこの小さなコードに遭遇し、知りたかったのですが、

realloc()指しているメモリ空間が縮小されている場合、関数はメモリ ブロックを別の場所に移動できますか?

int * a = malloc( 10*sizeof(int) );
int * b = realloc( a, 5*sizeof(int) );

可能であれば、どのような条件下でb、住所とは異なる住所を期待できaますか?

4

1 に答える 1

12

realloc任意の呼び出しでメモリを移動することが可能です。多くの実装では、縮小するとヒープ内の予約済みサイズが変更されるだけで、メモリは移動しません。ただし、断片化が少ないように最適化されたヒープでは、メモリをより適切な場所に移動することを選択できます。

reallocどの操作でも、メモリを同じ場所に保持することに依存しないでください。

于 2010-09-24T16:19:10.153 に答える