連結器與載入器與執行檔格式
關於.bss區段的特徵,下列何者正確?
- A是每次函式被呼叫時放置其區域變數的區域
- B是沒有初始值(或為0)的變數區域,檔案中只記錄大小,載入時以0填滿
- C是放置常數字串、無法寫入的區域
查看答案與解析
正確答案:B. 是沒有初始值(或為0)的變數區域,檔案中只記錄大小,載入時以0填滿
未寫初始值的全域變數與靜態變數,依C語言的規定從0開始。若內容全部為0,將一長串0存入檔案是浪費,因此.bss區段只記錄大小,由載入器配置記憶體並以0填滿。例如即使有「static char buf[1000000];」,執行檔也不會因此增大1 MB。
- A. 區域變數放在堆疊上。
- B. 正確。可節省檔案大小。
- C. 常數放在.rodata。