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

在C語言的函式中宣告、未加static的區域變數(自動變數),執行時會放在哪裡?

  1. A.data區段
  2. B堆疊(或暫存器)
  3. C堆積
查看答案與解析

正確答案:B. 堆疊(或暫存器)

區域變數是在函式被呼叫時於堆疊框(stack frame)中建立的(經最佳化後也可能只放在暫存器中),函式返回後就會消失。因此即使遞迴使得同一個函式被多層呼叫,每一層也都能擁有各自獨立的變數。執行檔中並沒有給區域變數用的區段,而是在函式開頭移動堆疊指標來配置空間。

  • A. .data是全域變數等的區域。
  • B. 正確。每次函式被呼叫時,都會在堆疊框中建立。
  • C. 堆積是以malloc等配置的區域。
練習這個領域 前往領域頁面

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

  1. 以C語言的malloc配置的記憶體,一般是從行程的哪個區域取得?
  2. 將Linux等一般行程的記憶體配置,由位址小的一側依序排列,下列何者正確?
  3. 將行程的堆積與堆疊配置成中間隔著寬廣的空閒區域、朝相反方向延伸,其優點為下列何者?
  4. 關於靜態連結,下列說明何者正確?
  5. 關於動態連結(共用函式庫)的優點,下列何者正確?

這個領域的比較