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

実行ファイルの.textセクションに入っているものはどれか。

  1. Aプログラムの機械語の命令
  2. Bプログラムの中で使う文章(テキストファイル)
  3. C実行中に入力された文字列
答えと解説を見る

正解:A. プログラムの機械語の命令

.textセクションには関数を翻訳した機械語の命令が入ります。実行中は読み取りと実行だけを許し、書き込みを禁止するのが普通で、誤った書き込みや攻撃者によるコードの書き換えを防げます。また書き換えないので、同じプログラムや共有ライブラリを複数のプロセスで動かすとき、物理メモリ上の1つのコピーを共有できます。

  • A. 正しい。名前に反して文字ではなくコードの領域です。
  • B. 名前はテキストでも、中身は機械語です。
  • C. 入力はヒープやスタックなど実行時の領域に置かれます。
この分野を解く 分野ページへ

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

  1. C言語でファイルの外側に「int limit = 100;」と書いたグローバル変数は、一般にどのセクションに置かれるか。
  2. .bssセクションの特徴として正しいものはどれか。
  3. C言語の「char *p = "hello"; p[0] = 'H';」を実行すると、多くの環境で異常終了する。その理由として正しいものはどれか。
  4. 上のグローバル変数のうち、一般に.bssセクションに置かれるものの組み合わせはどれか。
  5. C言語の関数の中で宣言した、staticの付かない局所変数(自動変数)は、実行中どこに置かれるか。