最初我很确定正确的答案一定是“都不是”,因为全局变量存储在数据内存中,但后来我找到了 Robert Lafore 的这本书,名为“C++ 中的面向对象编程”,它明确指出,根据C++标准,全局变量存储在堆上。现在我很困惑,无法真正弄清楚所提出问题的正确答案是什么。
为什么全局变量要存放在堆上?我缺少什么?
EDIT: 本书链接 https://docs.google.com/file/d/0B21HoBq6u9TsUHhqS3JIUmFuamc/view- 书籍第 205 页 / Google Drive 第 231 页
这本书第 205 页是这么说的:
如果您熟悉操作系统体系结构,您可能有兴趣知道局部变量和函数参数存储在堆栈上,而全局变量和静态变量存储在堆上。
这绝对是书上的错误。首先,我们应该从存储持续时间来讨论存储,就像C++标准那样:“堆栈”指的是自动存储持续时间,而“堆”指的是动态存储持续时间。 “栈”和“堆”都是分配策略,通常用于实现具有各自存储持续时间的对象。
全局变量具有静态存储期限。它们存储在与“堆”和“堆栈”分开的区域中。全局常量对象通常存储在“code”段中,而非常量全局对象存储在“data”段中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)