機械翻訳について

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);
}