首頁 > 後端開發 > C++ > C 中的全域變數在哪裡儲存它們的記憶體:堆疊還是堆疊?

C 中的全域變數在哪裡儲存它們的記憶體:堆疊還是堆疊?

DDD
發布: 2024-12-02 09:22:11
原創
968 人瀏覽過

Where Do Global Variables in C   Store Their Memory: Stack or Heap?

C 中全域變數的記憶體分配:堆疊與堆疊

在C 中,當全域宣告資料結構時,會出現以下問題:它消耗堆疊記憶體或堆疊記憶體。為了理解這一點,我們深入研究典型 C 進程的記憶體佈局。

C 進程的記憶體佈局

C 進程通常會分配五個不同的記憶體區域:

  1. 程式碼(文字段)
  2. 初始化資料(資料段)
  3. 未初始化資料( bss段)
  4. 堆疊

全域變數分配

當宣告一個全域變數時,它的記憶體要麼分配在資料段中,要麼分配在bss 段。

  1. 資料段: 包含初始化的全域變數。它的大小在編譯時是固定的。
  2. Bss段:包含未初始化的全域變數。它的大小在編譯時也是固定的,但其內容預設為零。

因此,全域變數儲存在data 段或bss 段中,它們是 的一部分靜態記憶體 分配給program.

範例

在給定的範例中,陣列arr 是struct AAA類型的全域變數。它將被分配在資料段或 bss 段中,具體取決於它是已初始化(具有預設值)還是未初始化(包含垃圾值)。

結論

總之,C 中的全域資料結構消耗分配給程式的靜態記憶體中的內存,特別是資料段或bss 段,它們不屬於堆疊或堆記憶體區域。

以上是C 中的全域變數在哪裡儲存它們的記憶體:堆疊還是堆疊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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