2011-08-04 45 views
1

在Linux中,「靜態」變量存在於BSS段(代碼中未運行),「本地」變量出現在「堆棧」中。 這意味着函數本地的靜態變量存在於BSS區域。如何完成簿記以確保範圍在功能本身內?函數本地的靜態變量

回答

3

存儲變量的地方與範圍無關。通常是編譯器本身限制範圍(訪問變量)。當你有一個像聲明:

static int xyzzy; 
一個函數中

xyzzy將不會被允許通過代碼函數外部訪問,不管事實,即它具有靜態存儲時間。

任何嘗試這樣做都將是編譯時錯誤,而不是運行時檢查。

事實上,你可以影響局部靜態變量而是像一個緩衝區溢出(運行到它存在的存儲區域),通過它的名字(編譯器將不允許)不會。

+0

當然,謝謝! – sril