リンカ・ローダと実行形式
上のグローバル変数のうち、一般に.bssセクションに置かれるものの組み合わせはどれか。
int a = 5;
int b;
static int c = 0;
const int d = 7;
- Aaとb
- Bbとc
- 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です。