code区定义的数据,会按照先定义先分配地址,递增的方式存储。
这样用指针访问数组时候,地址依次递增就可以。
全局变量定义数据,
全局变量(堆上)递增存储,局部变量(栈中)递减存储??
这篇文章写得可以
原文C\C++编译器关于变量的内存分配顺序总结
转载C++中局部和全局变量的地址分配
知识储备:
1. 内存的分区:代码区,数据区,堆,栈。 四个区域司职不同,相互配合。
2. 变量的分类以及初始化情况:局部变量,全局变量,静态的,非静态的。C++里面又包括成员变量。
结论1:在局部变量分配空间的顺序跟变量的声明顺序直接相关,同时按照内存由高到低的顺序进行空间分配。
猜测一: 全局变量的显示初始为0与默认初始化为0效果一致,并不会导致内存分配地址出现不同,这时候遵循的规则是按章全局变量命名的字母顺序(单个字母)分配空间。
但是这时候要是有个有个变量初始化为0,结果就不按字母顺序进行递增分配了,而是按照声明顺序进行。
如果全局变量的命名是多字母,或者数组中数值是宏并不是数字(若MAX = 4,那么a