リンカ・ローダと実行形式
プロセスのヒープとスタックを、間に広い空きをはさんで反対向きに伸ばす配置にする利点として正しいものはどれか。
- Aどちらがどれだけ使うか前もって分からなくても、空きを両方で柔軟に分け合える
- Bヒープとスタックが同じ番地を同時に使えるので、メモリが2倍になる
- Cスタックがあふれることが絶対になくなる
答えと解説を見る
正解:A. どちらがどれだけ使うか前もって分からなくても、空きを両方で柔軟に分け合える
ヒープは番地の大きい方へ、スタックは小さい方へ伸びるので、間の空きは、ヒープを多く使うプログラムにもスタックを多く使うプログラムにも使えます。それぞれに固定の大きさを割り当てると、片方が余っていても他方があふれることがあります。ただしスタックには上限が設定されていることが多く、深すぎる再帰は上限を超えてスタックオーバーフローになります。
- A. 正しい。仮想アドレス空間を有効に使えます。
- B. 同じ番地を同時に使うことはできません。
- C. 深い再帰などではスタックはあふれます。