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

下列全域變數中,一般會放在.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. 關於靜態連結,下列說明何者正確?

這個領域的比較