0

背景: ファイルから動的に再割り当てされた配列にテキストを読み取る C 関数を作成しています。私はキャラクターから始めてBUF_SIZE、限界に達するまで読んでから、再割り当てします。終了したら、\0(配列の末尾ではなく) テキストの末尾に追加します。

配列を大きすぎるままにしておく方が良いと考えられますか (そしてメモリを少し失う - ごくわずか)、それともrealloc()小さいサイズにしますか?

4

1 に答える 1

1

realloc()最終的なサイズまで気にしないでください。メモリが不要になった場合はfree()とにかくそれを行います。文字列が巨大でない限り、realloc()サイズを小さくしても、のアライメント要件によってmalloc()実際に予約されたスペースが変更されない可能性があります。非常に高価な関数を呼び出します。

TL;DR: 配列を縮小しないでください!

良いアドバイス: 統計的には、以前の制限に達するたびに、割り当てサイズを 2 倍にする価値があります。

于 2013-06-17T05:43:09.283 に答える