4.2 alloca()

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

構文

void *alloca(size_t size);

使用法

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

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

戻り値

割り当てられるメモリのバイト数を指すポインタが size で返されます。
関連する概念
1.5.3 ARM C ライブラリとスレッドセーフな関数
関連する参考文書
1.7.1 C ライブラリを使用しないアプリケーションの作成
4.57 スレッドセーフな C ライブラリ関数
非機密扱いPDF file icon PDF 版ARM DUI0808CJ
Copyright © 2014, 2015 ARM.All rights reserved.