other versions
other sections
BRK(2) | Linux Programmer's Manual | BRK(2) |
名前¶
brk, sbrk - データ・セグメントのサイズの変更する書式¶
#include <unistd.h>glibc 向けの機能検査マクロの要件 ( feature_test_macros(7) 参照):
- glibc 2.12 以降:
-
_BSD_SOURCE || _SVID_SOURCE || (_XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) && !(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)
-
glibc 2.12 より前: _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500 || -
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
説明¶
brk() と sbrk() は プログラム・ブレーク (program break) の場所を変更する。 プログラム・ブレークはプロセスのデータ・セグメント (data segment) の 末尾を示す (プログラム・ブレークは、初期化されていない データ・セグメントの末尾の直後の場所となる)。 プログラム・ブレークを増やすということは、そのプロセスへの メモリを割り当てる効果があり、 プログラム・ブレークを減らすということは、メモリを解放する ということである。返り値¶
成功した場合、 brk() は 0 を返す。 エラーの場合には、-1 を返し、 errno に ENOMEM を設定する (ただし「LINUX での注意」を参照すること)。準拠¶
4.3BSD, SUSv1. SUSv2 では「過去の名残 (LEGACY)」と位置付けられており、 POSIX.1-2001 で削除された。注意¶
brk() や sbrk() を使用するのは避けること。 malloc(3) メモリ割り当てパッケージの方が、移植性が高く、 使いやすいメモリ割り当て方法を提供している。Linux での注意¶
上で説明した brk() の返り値についての動作は、 Linux の brk() システムコールをラップする glibc の関数によるものである。 (その他の多くの実装でも、 brk() の返り値はこれと同じである。 この返り値は SUSv2 でも規定されている。) しかし、実際の Linux システムコールは、成功した場合、 プログラムの新しいブレークを返す。 失敗した場合、このシステムコールは現在のブレークを返す。 glibc ラッパー関数は同様の働きをし (すなわち、新しいブレークが addr より小さいかどうかをチェックし)、 上で説明した 0 と -1 という返り値を返す。関連項目¶
execve(2), getrlimit(2), end(3), malloc(3)この文書について¶
この man ページは Linux man-pages プロジェクトのリリース 3.41 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。2010-09-20 | Linux |