sbrk()を使用してメモリを取得するカスタムアロケータ関数があります。このメモリが不要になったときに解放するにはどうすればよいですか?
malloc()のfree()と同等の関数はありますか?
または、データセグメントの終わりを設定するためにbrk()を使用する必要がありますか?
sbrk()を使用してメモリを取得するカスタムアロケータ関数があります。このメモリが不要になったときに解放するにはどうすればよいですか?
malloc()のfree()と同等の関数はありますか?
または、データセグメントの終わりを設定するためにbrk()を使用する必要がありますか?
縮小する にはbrk
、 またはを再度使用する必要があります。sbrk
最後に、メモリの量を変更する必要がある唯一の方法は(システムコールのようなmmapを除いて)、ヒープを増減することです。そのため、sbrk
またはで上に移動し、または負の増分brk
で下に移動します。brk
sbrk
brk
と を使用しないでくださいsbrk
。どのライブラリ関数が を呼び出す可能性があり、時間の経過とともに変化する可能性があるかを知ることはほとんど不可能malloc
です。そのため、プログラムが現在動作していても、誰かが libc をアップグレードすると壊れる可能性があります。それらは非常に正当な理由で POSIX から除外されました。