16

sbrk()を使用してメモリを取得するカスタムアロケータ関数があります。このメモリが不要になったときに解放するにはどうすればよいですか?

malloc()のfree()と同等の関数はありますか?

または、データセグメントの終わりを設定するためにbrk()を使用する必要がありますか?

4

2 に答える 2

27

縮小する にはbrk、 またはを再度使用する必要があります。sbrk

最後に、メモリの量を変更する必要がある唯一の方法は(システムコールのようなmmapを除いて)、ヒープを増減することです。そのため、sbrkまたはで上に移動し、または負の増分brkで下に移動します。brksbrk

于 2010-01-12T20:11:28.513 に答える
1

brkと を使用しないでくださいsbrk。どのライブラリ関数が を呼び出す可能性があり、時間の経過とともに変化する可能性があるかを知ることはほとんど不可能mallocです。そのため、プログラムが現在動作していても、誰かが libc をアップグレードすると壊れる可能性があります。それらは非常に正当な理由で POSIX から除外されました。

于 2010-07-26T13:32:27.753 に答える