首頁 > 後端開發 > C++ > C 和 C 中靜態變數分配在哪裡?

C 和 C 中靜態變數分配在哪裡?

Mary-Kate Olsen
發布: 2024-12-29 15:06:12
原創
991 人瀏覽過

Where Are Static Variables Allocated in C and C  ?

C 和C 中的靜態變數分配

在C 和C 中,靜態變數分配在執行檔的特定段中,以避免不同翻譯單元之間的命名衝突。當編譯多個原始檔時,例如提供的程式碼中的 foo.c 和 bar.c 文件,每個翻譯單元都會建立自己的靜態變數副本。

靜態變數的儲存位置取決於它們是否被初始化為零或不初始化。零初始化的靜態資料放置在 .BSS 段中,而非零初始化的靜態資料放置在 .DATA 段中。

在給定的範例中, foo 和 bar 都初始化為非零值。因此,它們將被分配在.DATA段中。編譯器在 .DATA 段中為這些變數保留空間,它們的值儲存在那裡。

連結執行檔時,.DATA 和 .BSS 段的內容會複製到對應的段。 ELF 檔案。 .DATA 段通常合併到 .text(代碼)段中,而 .BSS 段在運行時分配在程式記憶體的 BSS 區域中。

在 GCC 工具鏈中,靜態檔案的位置可以使用 -Xlinker -d' 選項檢查變量,該選項顯示 ELF 部分及其內容。透過檢查 .data 和 .bss` 部分,您可以驗證靜態變數的分配並確保它們不會相互衝突。

以上是C 和 C 中靜態變數分配在哪裡?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板