応用情報技術者試験 応用情報技術者試験 平成31年度春期 午前 問17: プログラムの実行時に利用される記憶領域にスタック領域とヒープ領域がある。それらの領域に関する記述のうち,適切なものはどれか。
プログラムの実行時に利用される記憶領域に領域とヒープ領域がある。それらの領域に関する記述のうち,適切なものはどれか。
40.34%
問題本文
プログラムの実行時に利用される記憶領域にスタック領域とヒープ領域がある。それらの領域に関する記述のうち,適切なものはどれか。
選択肢
- ア.サブルーチンからの戻り番地の退避にはスタック領域が使用され,割当てと解放の順序に関連がないデータの格納にはヒープ領域が使用される。
- イ.スタック領域には未使用領域が存在するが,ヒープ領域には未使用領域は存在しない。
- ウ.ヒープ領域はスタック領域の予備領域であり,スタック領域が一杯になった場合にヒープ領域が動的に使用される。
- エ.ヒープ領域も構造的にはスタックと同じプッシュとポップの操作によって,データの格納と取出しを行う。
正解
ア. サブルーチンからの戻り番地の退避にはスタック領域が使用され,割当てと解放の順序に関連がないデータの格納にはヒープ領域が使用される。
解説
スタック領域とヒープ領域の用途と性質の違いを問う問題である。スタック領域は後入れ先出し(LIFO)で、サブルーチン呼び出し時の戻り番地や局所変数を退避するのに使われ、割当てと解放の順序が決まっている。一方ヒープ領域は割当てと解放の順序に決まりがないデータ(動的に確保するデータ)を格納するために使われる。この対比を正しく述べているアが正解である。
選択肢ごとの解説
- ア.戻り番地の退避はスタック、割当てと解放の順序に関連のないデータはヒープという用途の違いを正しく述べており正しい。
- イ.ヒープ領域にも確保されずに残る未使用領域は存在するため、「ヒープには未使用領域がない」は誤り。
- ウ.ヒープはスタックの予備ではなく独立した動的割当て用の領域であり、スタックが一杯になったら使われるという関係はないため誤り。
- エ.プッシュ・ポップで順序通りに出し入れするのはスタックの特徴であり、任意の順序で割当て・解放できるヒープは構造が異なるため誤り。
応用情報技術者試験 平成31年度春期 午前 の過去問一覧へ戻る・問17