修了試験 2017-12-10実施分 基本情報技術者試験 問17
プログラムの実行時に利用される記憶領域にスタック領域とヒープ領域がある。 それらの領域に関する記述のうち,適切なものはどれか。
正答1
解説
正解は1です。 スタック領域は、後入れ先出し(LIFO)でデータを出し入れする記憶領域です。 サブルーチンの戻り番地や局所変数のように、呼出しの順と逆の順で不要になるデータの格納に使われます。 ヒープ領域は、プログラムが実行中に任意の大きさ・任意の順序で確保と解放を行う領域です。 【選択肢別解説】 1:○ 戻り番地は呼出しの逆順で取り出すので、スタック領域が適しています。 割当てと解放の順序が決まっていないデータは、ヒープ領域に動的に確保されます。 2:× ヒープ領域でも、解放された領域や、まだ割り当てていない未使用領域は存在します。 確保と解放を繰り返すと、未使用の小さな領域が散らばる断片化も起こります。 3:× ヒープ領域はスタック領域の予備ではありません。 用途の異なる独立した領域で、スタック領域があふれるとスタックオーバーフローになります。 4:× プッシュとポップで格納と取出しを行うのはスタックです。 ヒープ領域は、任意の位置の領域を確保・解放する構造です。 【ポイント】 スタックは「順序が決まっていて自動で解放される」、ヒープは「順序が自由で明示的に解放する(またはガーベジコレクションで回収する)」と対比して覚えます。 データ構造の「ヒープ(木構造)」とは別のものなので混同しないようにします。まとめて解く
修了試験 2017-12-10実施分を通しで解く(80問)→