応用情報技術者試験 平成31年春 午前問17 解説付き過去問
問題
プログラムの実行時に利用される記憶領域にスタック領域とヒープ領域がある。
それらの領域に関する記述のうち、適切なものはどれか。
正解
解説
この問題は、プログラム実行時におけるスタック領域とヒープ領域の役割についての理解を確認するものです。
- スタック領域の機能
スタック領域は、プログラムの実行中に一時的なデータ保存やサブルーチン(関数)の呼び出しと戻りで活用されます。サブルーチンを呼び出す際には、戻り番地(サブルーチンからプログラムの主流れに戻るためのアドレス)をスタックに保存します。これにより、サブルーチンの実行が完了した後、正しく元のプログラムの位置に制御を戻すことができます。 - ヒープ領域の機能
ヒープ領域は、動的にメモリを割り当てるために使用されます。プログラムの実行中に必要なメモリ量が事前に定かでない場合や、任意の順序でメモリの割当てと解放を行う必要がある場合にヒープが利用されます。ヒープはスタックと異なり、プッシュとポップのLIFO(Last In First Out)方式を用いないため、割当てと解放の順序に一定の制約がなく、より柔軟なメモリ管理を可能にします。
したがって、サブルーチンからの戻り番地の退避にスタック領域を使用し、割当てと解放の順序が自由なデータ管理にヒープ領域を使用するという選択肢が正解です。