HOME»ソフトウェア開発技術者平成17年秋期»午前問27
ソフトウェア開発技術者平成17年秋期 午前問27
問27
プログラムの実行時に利用される記憶領域に,スタック領域とヒープ領域がある。それらの領域に関する記述のうち,適切なものはどれか。
- サブルーチンの戻り番地の退避にはスタック領域が,割当ての順序と解放の順序に関連のないデータにはヒープ領域が使用される。
- スタック領域には未使用領域が存在するが,ヒープ領域には未使用領域が存在しない。
- ヒープ領域はスタック領域の予備領域なので,スタック領域が一杯になった場合にヒープ領域が動的に使用される。
- ヒープ領域も構造的にはスタックと同じプッシュとポップの操作によって,データの格納と取出しを行う。
- [出題歴]
- 応用情報技術者 H21春期 問18
- 応用情報技術者 H26秋期 問15
- 応用情報技術者 H31春期 問17
分類
テクノロジ系 » アルゴリズムとプログラミング » プログラム言語
正解
ア
解説
スタック領域とヒープ領域の違いについては以下の通りです。
- スタック領域
- 一般にコールスタック・制御スタックと呼ばれている。LIFO方式で構成されプログラムの実行中サブルーチンの情報を記憶しておくメモリ領域。
サブルーチン終了後の戻りアドレスや局所変数などを保持する。 - ヒープ領域
- 2つのラベルを持つ双方向リストで構成されプログラム上から動的(任意)に確保できるメモリ領域。
動的にメモリ取得・解放を繰り返すことによりメモリ上にどこからも参照されない領域(ガベージ)が発生する。
- 正しい。
- ヒープの初期状態は「未使用」状態であり、メモリの動的確保によって「使用」領域と「未使用」領域に分かれていきます。
- ヒープとスタック領域の役割は異なるため、予備領域ではありません。
- ヒープ領域は、双方向リストによって構成されているので記述は誤りです。