応用情報技術者試験 平成31年春期試験午前問題 問17

プログラムの実行時に利用される記憶領域にスタック領域とヒープ領域がある。それらの領域に関する記述のうち,適切なものはどれか。

(ア)  サブルーチンからの戻り番地の退避にはスタック領域が使用され,割当てと解放の順序に関連がないデータにはヒープ領域が使用される。
(イ)  スタック領域には未使用領域が存在するが,ヒープ領域には未使用領域は存在しない。
(ウ)  ヒープ領域はスタック領域の予備領域であり,スタック領域が一杯になった場合にヒープ領域が動的に使用される。
(エ)  ヒープ領域も構造的にはスタックと同じプッシュとポップの操作によって,データの格納と取出しを行う。

タスクはその生成時に、OSから独立した記憶領域を割り当てられて動作します。この記憶領域には、そのプログラム自身を格納するための領域の他に、タスク内で用いられる変数や関数呼び出しに必要な情報などを格納するスタック領域と、メモリを確保する命令を用いることで都度必要に応じて動的に確保するヒープ領域が含まれます。

スタック領域とヒープ領域の違い

スタック領域
一般にコールスタック・制御スタックと呼ばれている。LIFO方式で構成されプログラムの実行中サブルーチンの情報を記憶しておくメモリ領域。
サブルーチン終了後の戻りアドレスや局所変数などを保持する。
ヒープ領域
2つのラベルを持つ双方向リストで構成されプログラム上から動的(任意)に確保できるメモリ領域。
動的にメモリ取得・解放を繰り返すことによりメモリ上にどこからも参照されない領域(ガベージ)が発生する。
したがって正しい説明は「ア」です。

この問題の出題歴
* 応用情報技術者 H21春期 問18
* 応用情報技術者 H26秋期 問15
* ソフトウェア開発技術者 H17秋期 問27

この記事が気に入ったらサポートをしてみませんか?