4.2 alloca()

alloca.h 内で定義される alloca() 関数は、関数にローカルストレージを割り当てます。size バイトのメモリを指すポインタが返されます。

デフォルトの実装では、スタック上の 8 バイトアラインメントのメモリブロックが返されます。
alloca() から返されたメモリを free() に渡すことはできません。その代わり、alloca() を呼び出した関数が復帰したときに、そのメモリは自動的に解放されます。

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

構文

void *alloca(size_t size);
関連する概念
1.13 ARM C ライブラリとスレッドセーフな関数
関連する参考文書
4.59 スレッドセーフな C ライブラリ関数
1.32 C ライブラリを使用しないアプリケーションの作成
非機密扱いPDF file icon PDF 版ARM DUI0475KJ
Copyright © 2010-2014 ARM.All rights reserved.