<CLearn/>
メモリ管理 レッスン1

スタックとヒープ

スタックとヒープのメモリ、自動変数と動的確保の違いを学びましょう。

2種類のメモリ領域

C言語プログラムは主に2つのメモリ領域を使います。 スタックは関数呼び出しに伴い自動管理される高速な領域、 ヒープはプログラマが明示的に確保・解放する自由度の高い領域です。

  • スタック: ローカル変数・関数引数・戻り先アドレスを格納、自動管理
  • ヒープ: malloc/calloc/reallocで確保、free()で解放が必要
  • スタックは高速だがサイズ制限あり(通常数MB)
  • ヒープは大きなデータや動的サイズに向く

スタック上の変数

関数内のローカル変数はスタックに確保され、関数終了時に自動解放されます。

Cエディタ

ヒープ上の動的確保

malloc() でヒープにメモリを確保します。関数を越えても有効です。

Cエディタ

スタックとヒープの比較

両者のアドレスを比較すると、スタックとヒープが異なるメモリ領域にあることがわかります。

Cエディタ