プログラムの実行時に利用される記憶領域にスタック領域とヒープ領域がある。それらの領域に関する記述のうち、適切なものはどれか。
ア |
サブルーチンからの戻り番地の退避にはスタック領域が、割当てと解放の順序に関係のないデータにはヒープ領域が使用される。 |
イ |
スタック領域には未使用領域が存在するが、ヒープ領域には未使用領域は存在しない。 |
ウ |
ヒープ領域はスタック領域の予備領域であり、スタック領域がいっぱいになった場合にヒープ領域が動的に使用される。 |
エ |
ヒープ領域も構造的にはスタックと同じプッシュとポップの操作によって、データの格納と取出しを行う。 |
解答・解説を見る
解答:ア
- スタック領域
- 自動変数、関数の引数や戻り値などを一時的に保存するための領域。後入れ先出し(LIFO:Last-In First-Out、FILO:First-In Last-Out)の構造を採用している。
- ヒープ領域
- 使うときに確保し、使い終わったら解放するための領域。
C言語の静的変数や配列の割当てなど解放の解放の順序に関係のないデータが使用される。
ア |
○ |
サブルーチンからの戻り番地の退避にはスタック領域が、割当てと解放の順序に関係のないデータにはヒープ領域が使用される。 |
イ |
× |
スタック領域,ヒープ領域も常にすべての領域を使用しているわけではない。したがって、未使用領域は存在する。 |
ウ |
× |
ヒープ領域とスタック領域は独立した領域である。したがって、領域を互いに融通しあうことはない。 |
エ |
× |
ヒープ領域には、プッシュ操作やポップ操作は用いない。ヒープ領域の格納と取出しは変数名を通じていつでも直接的に行なうことができる。 |