リンカ・ローダと実行形式

プロセスのヒープとスタックを、間に広い空きをはさんで反対向きに伸ばす配置にする利点として正しいものはどれか。

  1. Aどちらがどれだけ使うか前もって分からなくても、空きを両方で柔軟に分け合える
  2. Bヒープとスタックが同じ番地を同時に使えるので、メモリが2倍になる
  3. Cスタックがあふれることが絶対になくなる
答えと解説を見る

正解:A. どちらがどれだけ使うか前もって分からなくても、空きを両方で柔軟に分け合える

ヒープは番地の大きい方へ、スタックは小さい方へ伸びるので、間の空きは、ヒープを多く使うプログラムにもスタックを多く使うプログラムにも使えます。それぞれに固定の大きさを割り当てると、片方が余っていても他方があふれることがあります。ただしスタックには上限が設定されていることが多く、深すぎる再帰は上限を超えてスタックオーバーフローになります。

  • A. 正しい。仮想アドレス空間を有効に使えます。
  • B. 同じ番地を同時に使うことはできません。
  • C. 深い再帰などではスタックはあふれます。
この分野を解く 分野ページへ

リンカ・ローダと実行形式のほかの問題

  1. 静的リンクの説明として正しいものはどれか。
  2. 動的リンク(共有ライブラリ)の利点として正しいものはどれか。
  3. 動的リンクを使ったプログラムを別のコンピュータにコピーして実行したら、起動しなかった。最も考えられる原因はどれか。
  4. 静的ライブラリ(.aファイル)と一緒にリンクするとき、リンカが実行ファイルに組み込むものとして正しいものはどれか。
  5. GNUのリンカで「gcc -lmylib main.o」のように、静的ライブラリをそれを使うオブジェクトファイルより前に書くと、未定義の参照のエラーになることがある。その理由として正しいものはどれか。