平成21年度春期 応用情報技術者試験 午前 問18
プログラムの実行時に利用される記憶領域にスタック領域とヒープ領域がある。それらの領域に関する記述のうち,適切なものはどれか。
- ア サブルーチンからの戻り番地の退避にはスタック領域が,割当てと解放の順序に関連のないデータにはヒープ領域が使用される。
- イ スタック領域には未使用領域が存在するが,ヒープ領域には未使用領域は存在しない。
- ウ ヒープ領域はスタック領域の予備領域であり,スタック領域が一杯になった場合にヒープ領域が動的に使用される。
- エ ヒープ領域も構造的にはスタックと同じプッシュとポップの操作によって,データの格納と取出しを行う。
解答・解説を見る
正解:ア
AI解説
スタック領域はサブルーチン呼出し時の戻り番地やローカル変数などLIFO(後入れ先出し)で規則的に確保・解放されるデータの格納に使われ、ヒープ領域はプログラムが動的に確保・解放するため割当てと解放の順序に規則性がないデータの格納に使われる。 ア: スタック領域とヒープ領域それぞれの用途の説明として正しい。戻り番地はスタック、順序に関連のない動的データはヒープが使用される。これが正解。 イ: スタック領域にも未使用(空き)領域は存在し、ヒープ領域にも断片化などにより未使用領域が生じ得るため、この記述は不正確である。 ウ: ヒープ領域はスタック領域の予備領域ではなく、それぞれ独立した用途を持つ別の記憶領域である。 エ: ヒープ領域はプッシュ・ポップのようなLIFO操作ではなく、任意の順序で確保・解放(malloc/free等)される点がスタックと異なる。 💡 「規則的な後入れ先出し=スタック」「不規則な動的確保・解放=ヒープ」という対比で覚えるとよい。
出典:平成21年度 春期 応用情報技術者試験 午前 問18 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。