alloca
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++ |
---|---|---|---|
+ |