【发布时间】:2017-11-05 16:42:48
【问题描述】:
一开始我很确定正确的答案必须是“都不是”,因为全局变量存储在数据存储器中,但后来我找到了 Robert Lafore 的这本书,名为“C++ 中的面向对象编程” " 并且它明确指出,根据 C++ 标准,全局变量存储在堆上。现在我很困惑,无法真正弄清楚所提问题的正确答案是什么。
为什么全局变量会存储在堆上?我错过了什么?
编辑:Link to the book - 第 231 页
【问题讨论】:
-
" 并且它清楚地指出,根据 C++ 标准,全局变量存储在堆上" - 我真的怀疑它是否清楚地说明了这一点。贴出相关文字。
-
@NeilButterworth 我已经编辑了问题并添加了本书的链接,如果你想在那里查找的话。无论如何,它说 “如果您熟悉操作系统架构,您可能有兴趣知道局部变量和函数参数存储在堆栈上,而全局和静态变量存储在堆上。”我>
-
书错了。它们不存储在堆上。它们存储在数据段或 .bss 段中。
-
嗯,这当然不是真的。 C++ 没有明确说明它们的存储位置,但我知道没有实现将它们存储在堆上。
-
好的,谢谢你们的帮助。这真的让我很困惑。
标签: c++ global-variables heap-memory stack-memory