連結器與載入器與執行檔格式

在C語言中,寫在檔案外側的全域變數「int limit = 100;」,一般會放在哪個區段?

  1. A.data(有初始值的資料)
  2. B.bss(沒有初始值的資料)
  3. C.text(機器碼)
查看答案與解析

正確答案:A. .data(有初始值的資料)

具有非0初始值的全域變數與靜態變數會放在.data區段,其初始值會儲存在檔案中。載入程式時,這些內容會直接複製到記憶體,因此main開始時limit已經是100。.data在執行中可被改寫,所以是允許讀取與寫入的區域。

  • A. 正確。檔案中持有初始值100。
  • B. .bss是初始值為0或未指定初始值的變數。
  • C. .text是程式碼的區域。
練習這個領域 前往領域頁面

連結器與載入器與執行檔格式的其他題目

  1. 關於.bss區段的特徵,下列何者正確?
  2. 執行C語言的「char *p = "hello"; p[0] = 'H';」時,在許多環境中會異常終止。下列關於其原因的敘述何者正確?
  3. 下列全域變數中,一般會放在.bss區段的組合為何?
  4. 在C語言的函式中宣告、未加static的區域變數(自動變數),執行時會放在哪裡?
  5. 以C語言的malloc配置的記憶體,一般是從行程的哪個區域取得?

這個領域的比較