リンカ・ローダと実行形式
C言語でファイルの外側に「int limit = 100;」と書いたグローバル変数は、一般にどのセクションに置かれるか。
- A.data(初期値のあるデータ)
- B.bss(初期値のないデータ)
- C.text(機械語)
答えと解説を見る
正解:A. .data(初期値のあるデータ)
0以外の初期値を持つグローバル変数や静的変数は.dataセクションに置かれ、その初期値がファイルの中に保存されます。プログラムを読み込むとき、この内容がそのままメモリに写されるので、mainが始まる時点でlimitは100になっています。.dataは実行中に書き換えられるので、読み取りと書き込みが許された領域になります。
- A. 正しい。初期値100をファイルに持ちます。
- B. .bssは初期値が0か、指定のない変数です。
- C. .textはコードの領域です。