2.16.10. alloca()

alloca() 関数は、関数にローカルストレージを割り当てます。 size バイトのメモリを指すポインタが返されるか、十分な空きメモリを確保できない場合には NULL が返されます。 デフォルトの実装では、8 バイト境界で整列されたメモリブロックが返されます。

alloca() から返されたメモリを free() に渡すことはできません。 その代わり、alloca() を呼び出した関数が復帰したときに、そのメモリは自動的に解放されます。

alloca() を、関数ポインタを介して呼び出すことはできません。 alloca()setjmp() の両方を同じ関数内で使用する場合は注意が必要です。これは、setjmp()longjmp() の呼び出しの間に alloca() によってメモリを割り当てると、そのメモリは longjmp() への呼び出しによって解放されるためです。

この関数は、多くの C ライブラリで一般的な非標準拡張です。

構文

void* alloca(size_t size);

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0349AJ
Non-Confidential