平成26年度 秋期 応用情報技術者試験 午前 問15
テクノロジ/ソフトウェアプログラムの実行時に利用される記憶領域にスタック領域とヒープ領域がある。それらの領域に関する記述のうち,適切なものはどれか。
出典:平成26年度 秋期 応用情報技術者試験 午前 問15
- アサブルーチンからの戻り番地の退避にはスタック領域が使用され,割当てと解放の順序に関連がないデータの格納にはヒープ領域が使用される。
- イスタック領域には未使用領域が存在するが,ヒープ領域には未使用領域は存在しない。
- ウヒープ領域はスタック領域の予備領域であり,スタック領域が一杯になった場合にヒープ領域が動的に使用される。
- エヒープ領域も構造的にはスタックと同じプッシュとポップの操作によって,データの格納と取出しを行う。
正解:ア
解説
スタック領域はサブルーチン呼出し時の戻り番地やローカル変数の退避にLIFO(後入れ先出し)で使用され,割当てと解放が呼出し順序と対応します。一方ヒープ領域は,割当てと解放の順序に関連しない動的に確保されるデータの格納に使用されます。
選択肢ごとの解説
- ア正しい。戻り番地の退避にはスタック領域,順序に関連しないデータの格納にはヒープ領域が使用されます。
- イ誤り。ヒープ領域にも解放によって生じる未使用領域(空き領域)が存在します。
- ウ誤り。ヒープ領域はスタック領域の予備領域ではなく,独立した動的メモリ確保のための領域です。
- エ誤り。ヒープ領域はプッシュ・ポップではなく,malloc/freeのような明示的な確保・解放操作でデータを管理します。