常听说C++内存模型中提到有三个分区,静态存储区,堆还有栈区;
我忽地又想起汇编中所提及的,三个分段,代码段,数据段,堆栈段;
突然这些概念给我带来的混乱。
刚看了一个帖提出什么基栈、浮动栈和堆三个分区。链接:
http://www.cnblogs.com/iuices/archive/2011/11/24/2262324.html
他所指出基栈就是所谓静态区,浮动栈就所谓线程栈,堆即内存malloc/new的地方。而且指出其在进程私有空间中的次序。
从0到0x7f ffff分别出现,基栈、浮动栈和堆分配,堆分配是从上而下分配的。
我在VS2003环境下具体观察变量太函数入口地址。完全不符
我看到的是,从高址往下,先是静态存储{全局变量,静态变量,字符串常量},程序代码区,堆分配(分配自低往上),栈空间
所以我很奇怪了,我看到的这些地址信息,是否不足以确定内存分区管理。因为根据汇编知识,内存地址计算是通过段地址与偏移地址来计算的。而我们看到的地址可能就只是偏移址。那我们到底如何确定C++编译是如何进行内存分区的。