栈(stack)地址是向低地址扩展的数据结构,是一块连续的内存区域,栈的速度快,但是空间小。C++函数栈空间最大值为1M,可以调整
存储类型:值类型(函数参数、局部变量)、结构体
堆(heap)是向高地址扩展的数据结构,是不连续的内存区域,是用链表实现的。
存储类型:引用类型、malloc关键字实例化引用数据类型的对象,并指向堆中的数据、数组
(new出来的对象存放在自由变量区,可以是堆区,还可以是静态存储区)
静态变量区:static修饰的变量!
static修饰的变量与全局变量:相同点:都在静态存储区
不同点:非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效
结构体&类分配规则:
1、 分配内存的顺序是按照声明的顺序。
2、 每个变量相对于起始位置的偏移量必须是该变量类型大小的整数倍,不是整数倍空出内存,直到偏移量是整数倍为止。
3、 最后整个结构体的大小必须是里面变量类型最大值的整数倍。
空类