表示: Delphi
C++
表示設定
alloca
提供:RAD Studio XE2
malloc.h:インデックス への移動
ヘッダーファイル
malloc.h
カテゴリ
メモリルーチン
プロトタイプ
void *alloca(size_t size);
説明
一時的なスタック領域を割り当てます。
alloca は,スタックに size バイトを割り当てます。割り当てられた領域は,呼び出し側の関数の終了時に自動的に解放されます。
alloca の使用は推奨されていません。C++ プログラムの try ブロックでは,alloca 関数を使用しないでください。例外が送出されると,alloca によってスタックに配置されたすべての値が破損します。
戻り値
十分なスタック領域がある場合,alloca は,割り当てられたスタック領域へのポインタを返します。そうでない場合は,NULL を返します。
例
#include <malloc.h> #include <stdio.h> #include <stdlib.h> void test(int a) { char *newstack; int len = a; char dummy[1]; dummy[0] = 0; /* 適切なスタックフレームの強制 */ printf("SP before calling alloca(0x%X) = 0x%X\n",len,_SP); newstack = (char *) alloca(len); printf("SP after calling alloca = 0x%X\n",_SP); if (newstack) printf("Alloca(0x%X) returned %p\n",len,newstack); else printf("Alloca(0x%X) failed\n",len); } void main() { test(256); test(16384); }
移植性
| POSIX | Win32 | ANSI C | ANSI C++ |
|---|---|---|---|
|
+ |