スタック領域とヒープ領域
出典: 平成31年度 春期 応用情報技術者試験 午前 問17 (IPA)
プログラムの実行時に利用される記憶領域にスタック領域とヒープ領域がある。それらの領域に関する記述のうち,適切なものはどれか。
- ア サブルーチンからの戻り番地の退避にはスタック領域が使用され,割当てと解放の順序に関連がないデータの格納にはヒープ領域が使用される。
- イ スタック領域には未使用領域が存在するが,ヒープ領域には未使用領域は存在しない。
- ウ ヒープ領域はスタック領域の予備領域であり,スタック領域が一杯になった場合にヒープ領域が動的に使用される。
- エ ヒープ領域も構造的にはスタックと同じプッシュとポップの操作によって,データの格納と取出しを行う。
正解と解説を見る
正解: ア
- ア: 戻り番地はスタック、順序に関係なく確保・解放するデータはヒープに置くので正しい答えです。
- イ: ヒープ領域にも未使用領域はあり、確保と解放を繰り返すと断片化した空き領域もできます。
- ウ: ヒープ領域はスタック領域の予備ではなく、用途が異なる別の領域です。
- エ: ヒープ領域はプッシュとポップで使うのではなく、任意の順序で確保・解放します。
ポイント
- スタック領域: 後入れ先出しで使う領域です。サブルーチンの 戻り番地 や局所変数を格納し、呼出しと逆の順に解放されます。
- ヒープ領域: プログラムが実行中に必要なときに確保・解放する領域です。割当てと解放の順序が自由 なデータ (new や malloc で確保したもの) に使います。