過去問解きまくり研究所 ホーム

平成26年度 秋期 午前 問15

ソフトウェア

スタックに関する問題

プログラムの実行時に利用される記憶領域にスタック領域とヒープ領域がある。それらの領域に関する記述のうち,適切なものはどれか。

答えと解説を見る

✓ これが正解アサブルーチンからの戻り番地の退避にはスタック領域が使用され,割当てと解放の順序に関連がないデータの格納にはヒープ領域が使用される。

解説

解放の順が決まっているかが割れ目です。

二つの領域の違いは、解放する順番があらかじめ決まっているかどうかの一点に還元できます。スタック領域は、手続を呼び出すたびに戻り番地や引数や局所変数を積み上げ、その手続が終わったら必ず積んだのと逆の順に降ろします。入れ子の内側から順に片づくことが約束されているので、積む操作と降ろす操作だけあれば管理は足ります。いっぽうヒープ領域は、プログラムが必要と判断した時点で確保し、不要と判断した時点で解放します。確保した順序と解放する順序のあいだに決まりがないので、どこが空いているかを覚えておく表が別に必要ですし、使われている領域のあいだにとびとびの空きも生じます。この違いを設問の語に当てはめます。手続からの戻り番地を退避するのは呼出しの入れ子そのものですから前者に、割当てと解放の順序に関連がないデータは後者に置かれます。この組合せを述べたものが正しい記述です。

ほかの選択肢はなぜ違うのか

出典:平成26年度 秋期 応用情報技術者試験 午前 問15

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)