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

上のグローバル変数のうち、一般に.bssセクションに置かれるものの組み合わせはどれか。

int a = 5;
int b;
static int c = 0;
const int d = 7;
  1. Aaとb
  2. Bbとc
  3. Ccとd
答えと解説を見る

正解:B. bとc

aは0以外の初期値があるので.data、bは初期値がなく0から始まるので.bss、cは初期値0なので、ファイルに0を保存する必要がなく.bssに置かれます。dはconstの定数なので、書き込み禁止の.rodataに置かれます。staticはほかのファイルから見えるかどうかを決めるもので、どのセクションに置くかは初期値とconstで決まります。

  • A. aは初期値5があるので.dataです。
  • B. 正しい。初期値なしと初期値0の変数です。
  • C. dは書き換えない定数なので.rodataです。
この分野を解く 分野ページへ

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

  1. C言語の関数の中で宣言した、staticの付かない局所変数(自動変数)は、実行中どこに置かれるか。
  2. C言語のmallocで確保したメモリは、一般にプロセスのどの領域から取られるか。
  3. Linuxなどの一般的なプロセスのメモリ配置を、番地の小さい方から並べたものとして正しいものはどれか。
  4. プロセスのヒープとスタックを、間に広い空きをはさんで反対向きに伸ばす配置にする利点として正しいものはどれか。
  5. 静的リンクの説明として正しいものはどれか。