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