連結器與載入器與執行檔格式
在C語言的函式中宣告、未加static的區域變數(自動變數),執行時會放在哪裡?
- A.data區段
- B堆疊(或暫存器)
- C堆積
查看答案與解析
正確答案:B. 堆疊(或暫存器)
區域變數是在函式被呼叫時於堆疊框(stack frame)中建立的(經最佳化後也可能只放在暫存器中),函式返回後就會消失。因此即使遞迴使得同一個函式被多層呼叫,每一層也都能擁有各自獨立的變數。執行檔中並沒有給區域變數用的區段,而是在函式開頭移動堆疊指標來配置空間。
- A. .data是全域變數等的區域。
- B. 正確。每次函式被呼叫時,都會在堆疊框中建立。
- C. 堆積是以malloc等配置的區域。