正答1
解説
正解は1です。
スタック領域は、後から入れたものを先に取り出すLIFO(Last In First Out)で管理される領域です。
ヒープ領域は、プログラムが必要なときに任意の大きさを確保し、任意の順序で解放する領域です。
【選択肢別解説】
1:○ サブルーチンの戻り番地は呼出しと逆の順序で使われるので、LIFOのスタック領域に退避します。
割当てと解放の順序が決まっていないデータは、ヒープ領域に格納します。
2:× どちらの領域にも未使用領域は存在します。
ヒープ領域では確保と解放を繰り返すと、細切れの空き領域(断片化)が生じます。
3:× ヒープ領域はスタック領域の予備ではありません。
両者は用途の異なる独立した領域であり、スタックが一杯になればスタックオーバフローになります。
4:× ヒープ領域はプッシュとポップでは操作しません。
mallocとfreeのような関数で、任意の位置の領域を確保・解放します。
【ポイント】
呼出し順に積み下ろしするものはスタック、寿命がばらばらなものはヒープと覚えましょう。
ヒープ領域の未使用領域を回収する仕組みがガベージコレクションです。