1
在Linux中,「靜態」變量存在於BSS段(代碼中未運行),「本地」變量出現在「堆棧」中。 這意味着函數本地的靜態變量存在於BSS區域。如何完成簿記以確保範圍在功能本身內?函數本地的靜態變量
在Linux中,「靜態」變量存在於BSS段(代碼中未運行),「本地」變量出現在「堆棧」中。 這意味着函數本地的靜態變量存在於BSS區域。如何完成簿記以確保範圍在功能本身內?函數本地的靜態變量
存儲變量的地方與範圍無關。通常是編譯器本身限制範圍(訪問變量)。當你有一個像聲明:
static int xyzzy;
一個函數中
,xyzzy
將不會被允許通過代碼函數外部訪問,不管事實,即它具有靜態存儲時間。
任何嘗試這樣做都將是編譯時錯誤,而不是運行時檢查。
事實上,你可以影響局部靜態變量而是像一個緩衝區溢出(運行到它存在的存儲區域),通過它的名字(編譯器將不允許)不會。
當然,謝謝! – sril