第53章 alloca() 関数

目次

53.1. alloca() の使用法

 alloca() 関数はスタックアロケーターの C 言語実装です。

 スタックアロケーターはヒープ領域ではなくスタック領域にメモリーを割り当てることができます。

 では宣言です。

#include <alloca.h>
void *alloca(size_t size);

 基本的には malloc() と同じ引数や戻り値型ですね。

 では簡単な実装をしてみましょうかね。

main.c. 

  1 #include <alloca.h>
  2 #include <stdio.h>
  3
  4 int main()
  5 {
  6   void* ptr = alloca(sizeof(int));
  7   printf("%p\n",ptr);
  8   return 0;
  9 }

 これをビルドして出力すると以下のような結果を出力します。

$ gcc main.c
$ ./a.out
0x7fffde845670

  ptr は alloca() を使わないと何も指していないポインターですんで、そのままでは使えません。

 てなことで alloca() を使うことで動的な割り当てがスタックメモリー領域で使えることが確認できましたね。

 次の項目ではもう少し複雑な例を考えて見ましょうかね。

Copyright 2018-2019, by Masaki Komatsu