目次
メモリ
スタック領域とは
ヒープ領域とは
メモリ確保のイメージ
値型のメモリ確保のイメージ
参照型のメモリ確保のイメージ
おまけ
リストとは
挿入
削除
単方向リスト
循環リスト
参考文献、参考サイト
関連記事
メモリ
プログラムの実行時に利用される記憶領域(メモリ領域)には
- スタック領域
- ヒープ領域
がある
スタック領域とは
- 一般にコールスタック、制御スタック、と呼ばれている
- LIFO(Last In First Out、先入れ後出し)方式で構成されている
スタック領域の「スタック」が指しているのは
⭕️メモリの解放と、メモリの確保
❌データの入れ方
メモリの解放とメモリの確保が、後入れ先出しの形になっているのを表している
-
プログラム実行中のサブルーチン1の情報を記憶しておくメモリ領域
→スタック領域は、確保したのとは逆の順番で解放するのが特徴 -
サブルーチン1終了後の戻りアドレスや局所変数(ローカル変数)などを保持する
-
値型(基本データ型、プリミティブ型)の値と、参照型載(オブジェクト型)の参照値2が保存される
ヒープ領域とは
- 2つのラベルを持つ双方向リストで構成され、プログラム上から動的(任意)に確保できるメモリ領域
- 動的にメモリ取得を繰り返すことによって、メモリ上にどこからも参照できない領域(ガーベージ)が発生する
- どのような順序でメモリを確保、解放するかはソフトウェア側で自由に決められる
- 参照型の値、オブジェクトのインスタンス、実際の値やメソッドが格納される
なぜヒープ領域というの?
ヒープ(heap)は「積み重なる」「堆積する」という意味
→プログラムの実行に伴い、動的に確保され、その領域が順次拡大する様子から「ヒープ」と呼ばれる
メモリ確保のイメージ
値型のメモリ確保のイメージ
変数を宣言すると、メモリのスタック領域に「1」という値が格納される
参照型のメモリ確保のイメージ
下記サイトにある
実際に値が格納されているのはロッカーの中で、変数はロッカーの番号が書いた鍵のイメージ
というのが理解しやすいかと思います。
おまけ
リストとは
- リストの特徴:柔軟さ
- ポインタさえ変えれば、いくらでもデータを繋ぎ変えることが可能
→データの追加・挿入・削除などがとても簡単にできる
- ポインタさえ変えれば、いくらでもデータを繋ぎ変えることが可能
- リストはポインタを順に辿る必要がある
→配列のように添え字を使って個々のデータに直接アクセスすることはできない
挿入
- ポインタを削除した後、そこに新しいポインタを書く
削除
- ポインタを削除した後、そこに一つ後ろへのポインタを書く
単方向リスト
- 次のデータへのポインタを、1つだけ持っているリスト構造
- 一方通行のため、先頭から順に辿っていくしかない
循環リスト
- ポインタによってデータが環状に連結されているリスト構造
- 最後尾のデータは、先頭データへのポインタを持つ
- 全体が環状に繋がっていてグルグル回ることがでる
参考文献、参考サイト
- きたみりゅうじ. キタミ式イラストIT塾 応用情報技術者 令和04年. 技術評論社, 2017, p.376-377
関連記事