靜態變數在C 和C 程式設計中發揮著至關重要的作用,使資料能夠在整個生命週期中持續存在。程式.但是這些變數到底儲存在可執行檔中的哪裡以確保不會發生名稱衝突?
考慮以下程式碼片段:
// foo.c static int foo = 1; void fooTest() { static int bar = 2; foo++; bar++; } // bar.c static int foo = 10; void barTest() { static int bar = 20; foo++; bar++; }
當使用 main 函數編譯和連結這些檔案時,重複呼叫 fooTest() 和 barTest(),printf 語句獨立遞增。這表明 foo 和 bar 變數對於它們各自的翻譯單元來說是本地的。
執行檔中靜態變數的分配取決於它們的初始化。
靜態變數的特定儲存位置可能會根據所使用的工具鏈而有所不同。對於此討論,我們假設我們使用的是 GNU 編譯器集合 (GCC)。
C 和 C 中的靜態變數儲存在可執行檔的 .BSS 或 .DATA 段中文件,取決於它們的初始化。這確保每個靜態變數都有唯一的記憶體位置並防止名稱衝突。
以上是C 和 C 可執行檔中靜態變數儲存在哪裡?的詳細內容。更多資訊請關注PHP中文網其他相關文章!