メモリ管理 レッスン1
スタックとヒープ
スタックとヒープのメモリ、自動変数と動的確保の違いを学びましょう。
2種類のメモリ領域
C言語プログラムは主に2つのメモリ領域を使います。 スタックは関数呼び出しに伴い自動管理される高速な領域、 ヒープはプログラマが明示的に確保・解放する自由度の高い領域です。
- スタック: ローカル変数・関数引数・戻り先アドレスを格納、自動管理
- ヒープ: malloc/calloc/reallocで確保、free()で解放が必要
- スタックは高速だがサイズ制限あり(通常数MB)
- ヒープは大きなデータや動的サイズに向く
スタック上の変数
関数内のローカル変数はスタックに確保され、関数終了時に自動解放されます。
Cエディタ
ヒープ上の動的確保
malloc() でヒープにメモリを確保します。関数を越えても有効です。
Cエディタ
スタックとヒープの比較
両者のアドレスを比較すると、スタックとヒープが異なるメモリ領域にあることがわかります。
Cエディタ