Edo*_*ini 20 c++ heap stack global-variables
我星期二参加考试,我注意到,这个问题是我老师在他的课文中提出的问题.
最初我很确定正确答案必须是"没有",因为全局变量存储在数据存储器中,但后来我发现了Robert Lafore的这本书,称为"面向对象的C++编程",它明确指出,根据C++标准,全局变量存储在堆上.现在我很困惑,无法弄清楚问题的正确答案是什么.
为什么全局变量存储在堆上?我错过了什么?
提前致谢.
编辑:链接到该书 - 第231页
das*_*ght 32
这是本书第205页所说的内容:
如果您熟悉操作系统体系结构,您可能有兴趣知道局部变量和函数参数存储在堆栈中,而全局变量和静态变量存储在堆上.
这绝对是书中的一个错误.首先,应该根据存储持续时间讨论存储,C++标准的方式:"堆栈"是指自动存储持续时间,而"堆"是指动态存储持续时间."堆栈"和"堆"都是分配策略,通常用于实现具有各自存储持续时间的对象.
全局变量具有静态存储持续时间 它们存储在与"堆"和"堆栈"分开的区域中.全局常量对象通常存储在"代码"段中,而非常量全局对象存储在"数据"段中.
| 归档时间: |
|
| 查看次数: |
14415 次 |
| 最近记录: |