|
HOME > Linux Tips ( 目次 ) > Linux コマンド 一覧表 > a > alloca - ライブラリコールの説明 alloca - ライブラリコールの説明 - Linux コマンド集 一覧表名前alloca - メモリを割り付ける 書式
#include <alloca.h>
説明alloca ()関数は、 size バイトの領域を呼出元のスタック・フレームに割り付ける。 この一時的な領域は、 alloca ()を呼び出した関数が呼出元に返るときに自動的に解放される。 返り値alloca ()関数は、割り付けた領域の始まりを指すポインタを返す。 割り付けによってスタックオーバーフローが起った場合の プログラムの動作は定義されていない。 準拠32v, pwb, pwb.2, 3bsd, 4bsd に alloca ()関数が登場した証拠がある。 4.3BSD には、マニュアルページがある。 Linux は、GNU 版を使っている。 この関数は POSIX.1-2001 にはない。 GNU 版についての注意
通常
gcc
は
alloca
()の呼び出しをインラインコードに変換する。
-ansi オプションまたは
-fno-builtin オプションを指定した場合は、
この操作は行われない。
だだし、デフォルトでは glibc 版の
<stdlib.h>
は
<alloca.h>
をインクルードしており、これには以下の行が含まれているので注意すること。
このコードはインライン化されているので、 この関数のアドレスを取得したり、 他のライブラリをリンクして動作を変更することはできない。 通常このインラインコードはスタックポインタを移動する 1 つの命令 (instruction) から構成されており、 スタックオーバーフローをチェックしない。 よって NULL エラーが返されることはない。 バグalloca ()関数は、機種とコンパイラに依存する。 多くのシステムでは実装にバグがあるので、 この関数の使用は推奨されない。 多くのシステムにおいて、関数コールの引き数のリスト内では alloca ()が使えない。 これは、 alloca ()によって予約されるスタック領域が、 関数引き数に使われるスタック領域の中に現れてしまうためである。 関連項目
brk
(2),
pagesize
(2),
calloc
(3),
malloc
(3),
realloc
(3)
|
|