int brk(void *end_data_segment); のマニュアル 「brk() は、データ セグメントの末尾を end_data_segment で指定された値に設定します」
成功すると 0 を返し、それ以外は -1 を返します。
しかし、ブレークの初期値 (sbrk(0) など) を取得するにはどうすればよいですか?
よろしくお願いします、
マニュアルには次のように記載されています。
成功すると、brk() はゼロを返します。エラーの場合、-1 が返され、errno が ENOMEM に設定されます。
したがって、 を呼び出して初期値を取得する方法はありませんbrk
。代わりに、お気づきのように、次を使用する必要がありますsbrk(0)
。
sbrk() は、プログラムのデータ空間をインクリメント バイトだけインクリメントします。インクリメント 0 で sbrk() を呼び出すと、プログラム ブレークの現在の位置を見つけることができます。
brk
によって既に提供されている場合、この機能も提供することを期待する理由はありませんsbrk(0)
。そうは言っても、 /mmap
に対する特定のオペレーティング システムの制限により、メモリ割り当てのニーズに対して一般的にuse を使用する方が賢明かもしれません。brk
sbrk