プログラムの実行時に利用される記憶領域にスタック領域とヒープ領域がある。それらの領域に関する記述のうち,適切なものはどれか。
平成31年度 春期 応用情報技術者 問17
テクノロジ系
正解と解説
正解 ア
スタック領域は後入れ先出しで、サブルーチンの戻り番地の退避に使われます。ヒープ領域は、割当てと解放の順序が決まっていないデータに使われます。
スタック領域は、最後に格納したデータを最初に取り出すLIFO(Last In First Out)の構造です。サブルーチンの呼出しと復帰は入れ子になるので、戻り番地や局所変数の退避に適しています。ヒープ領域は、プログラムが実行中に必要な大きさを任意の時点で確保し、任意の時点で解放する領域です。割当てと解放の順序に関連がないので、解放後に未使用領域が点在する断片化が起こります。
イ:ヒープ領域でも、確保前の領域や解放後の領域が未使用領域として存在します。解放が順不同なので、未使用領域が細切れに散らばる断片化も起こります。
ウ:ヒープ領域は、動的に確保するデータのための独立した領域です。スタック領域が一杯になると、ヒープ領域に切り替わるのではなく、スタックオーバーフローになります。
エ:プッシュとポップで格納と取出しを行うのは、スタック領域です。ヒープ領域は任意の位置を確保・解放するので、順序に制約はありません。
出典:平成31年度 春期 応用情報技術者試験 問17
全年度から出題。10問で実力を判定します。登録不要。
出典:平成31年度 春期 応用情報技術者試験 問17(独立行政法人情報処理推進機構)
解説と用語ページは生成 AI が書き、別の生成 AI が確かめています。作り方