スタックとヒープとモリの使われ方
C言語復習メモ
スタックとヒープとメモリの使われ方
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
●スタック
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
積読の本のようにデータを積み上げる構造のメモリ領域のこと。
データ登録時はリストの一番上に登録され、
データ使用時は一番上にあるデータが使用される。
関数を呼び出す際には
引数,リターンアドレス,関数内ローカル変数など
がスタック領域に保持されることで関数の実行と復帰が行われている
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
●ヒープ
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
プログラム実行時に自由に確保することができるメモリ領域のこと。
メモリの山(干し草の山)からメモリを動的に分けてもらうという意味。
malloc関数などでヒープメモリを確保しfree関数で解放する。
構造体を使用するための領域確保、可変長の配列の領域確保などに使用される。
確保した領域について解放漏れなどがあるとメモリリークが発生する危険がある。すぐにエラーが出ればいいが、後続の処理でエラーとなることもある。
メモリエラーのデバッグは時間を要する。メモリエラーの静的チェックツール、動的チェックツールを有効に使うことも検討する必要がある。