平成21年度 春期 午前 問18
ソフトウェア
スタック領域に関する問題
プログラムの実行時に利用される記憶領域にスタック領域とヒープ領域がある。それらの領域に関する記述のうち,適切なものはどれか。
- アサブルーチンからの戻り番地の退避にはスタック領域が,割当てと解放の順序に関連のないデータにはヒープ領域が使用される。
- イスタック領域には未使用領域が存在するが,ヒープ領域には未使用領域は存在しない。
- ウヒープ領域はスタック領域の予備領域であり,スタック領域が一杯になった場合にヒープ領域が動的に使用される。
- エヒープ領域も構造的にはスタックと同じプッシュとポップの操作によって,データの格納と取出しを行う。
答えと解説を見る
✓ これが正解アサブルーチンからの戻り番地の退避にはスタック領域が,割当てと解放の順序に関連のないデータにはヒープ領域が使用される。
解説
戻り番地はスタック、順序自由なデータはヒープに置きます。
実行中に確保する記憶領域には、後入れ先出しの規則で使うスタック領域と、そうした順序の約束を持たないヒープ領域があります。スタック領域は、後で入れたものを先に取り出すという規則に沿うため、呼び出しの入れ子構造にきちんと合います。サブルーチンの戻り番地や、その中で使う局所変数のように、確保と解放の順が呼び出しの入れ子と一致するものを置くのに向いています。ヒープ領域は、これに対して確保と解放の順序に約束を置かず、必要になった時にだけ確保し、不要になった時に解放できる自由さがあります。生存期間の長さや解放の順序が呼び出しの入れ子と一致しないデータは、この領域に置くと扱いやすくなります。したがって、両者は目的の違う道具として使い分けます。
ほかの選択肢はなぜ違うのか
- イスタック領域には未使用領域が存在するが,…:スタックには未使用領域があるがヒープには未使用領域が存在しないと述べています。実際にはヒープでも不要になった枠を解放したあとに未使用の隙間が生まれるので、後半の主張が成り立ちません。
- ウヒープ領域はスタック領域の予備領域であり…:ヒープはスタックの予備で、スタックが一杯になったら動的に使われると述べています。両者は目的の異なる別々の領域で、片方を埋める補助として結び付けられているわけではありません。
- エヒープ領域も構造的にはスタックと同じプッ…:ヒープも構造的にはスタックと同じプッシュとポップの操作でデータを扱うと述べています。ヒープは順序の制約を持たない格納の仕組みで、後入れ先出しの操作に縛られていません。
出典:平成21年度 春期 応用情報技術者試験 午前 問18
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)