- 存储空间的分布
程序的空间分布通常分为(地址从下到上): - 代码段
- 初始化数据段
- 未初始化数据段
- 堆
- 栈
分布如下图所示:(图片来自:C语言内存空间分布详解)
这里写图片描述
堆地址是从下到上增长,栈地址从上到下增长。
一个例题:判断a,b,c,d的存储空间?
int a=0;
class someClass{
int b;
static int c;
};
int main(){
int d=0;
someClass *p=new someClass();
return 0;
}
1
2
3
4
5
6
7
8
9
10
解析:
变量a 全局变量 存放在全局变量区
变量b 类的成员变量 由类的定义决定 在main函数中类A动态分配 因此b在堆区,这里一定要注意,b的存储区域的变化
变量c 静态成员 静态存储区
变量d 局部变量 栈区