alloca
メモリーを割り当てて、ポインタを返します。
void alloca(size_t size)
alloca関数は、スクラッチ・メモリーからsizeバイトを割り当て、割り当てられたメモリーへのポインタを返します。 必ず8バイトのバイト列を持つポインタが返されます。 スクラッチ・メモリーは、節の処理中のみ有効です。 allocaで割り当てられたメモリーは、節の処理が完了したときに割当てが解除されます。 使用できるスクラッチ・メモリーが不足している場合、メモリーの割当ては行われず、エラーが生成されます。
例8-1 allocaを使用して割り当てられたメモリー・リージョンに文字列を割り当て、ポインタを使用して再度読み取る方法
BEGIN
{
x = (string *)alloca(sizeof(string) + 1);
*x = "abc";
trace(*x);
exit(0);
}