簡體   English   中英

C++ 中的全局變量是存儲在堆棧、堆還是兩者都不存儲?

[英]Are global variables in C++ stored on the stack, heap or neither of them?

最初我很確定正確的答案必須是“沒有一個”,因為全局變量存儲在數據 memory 中,但后來我找到了 Robert Lafore 的這本書,名為“C++ 中的面向對象編程”,它明確指出,根據 C++ 標准,全局變量存儲在堆上。 現在我很困惑,無法真正弄清楚所提出問題的正確答案是什么。

為什么全局變量會存儲在堆上? 我錯過了什么?

編輯: 鏈接到本書- 第 231 頁

這是本書第205頁所說的內容:

如果您熟悉操作系統體系結構,您可能有興趣知道局部變量和函數參數存儲在堆棧中,而全局變量和靜態變量存儲在堆上。

這絕對是書中的一個錯誤。 首先,應該根據存儲持續時間討論存儲,C ++標准的方式:“堆棧”指的是自動存儲持續時間,而“堆”指的是動態存儲持續時間。 “堆棧”和“堆”都是分配策略,通常用於實現具有各自存儲持續時間的對象。

全局變量具有靜態存儲持續時間 它們存儲在與“堆”和“堆棧”分開的區域中。 全局常量對象通常存儲在“代碼”段中,而非常量全局對象存儲在“數據”段中。

答案是否定的,因為全局常量變量存放在代碼段中,全局非常量變量存放在數據段中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM