alloca

メモリーを割り当てて、ポインタを返します。

void alloca(size_t size)

alloca関数は、スクラッチ・メモリーからsizeバイトを割り当て、割り当てられたメモリーへのポインタを返します。必ず8バイトのバイト列を持つポインタが返されます。スクラッチ・メモリーは、節の処理中のみ有効です。allocaで割り当てられたメモリーは、節の処理が完了したときに割当てが解除されます。使用できるスクラッチ・メモリーが不足している場合、メモリーの割当ては行われず、エラーが生成されます。

例7-1 allocaを使用して割り当てられたメモリー領域に文字列を割り当て、ポインタを使用して再度読み取る方法

BEGIN
{
        x = (string *)alloca(sizeof(string) + 1);
        *x = "abc";
        trace(*x);
        exit(0);
}