这里写目录标题
对于一个完整的程序,在内存中的分布情况如下图:
1、栈区heap
由编译器自动分配释放,像局部变量,函数参数,都是在栈区。会随着作用域退出而释放空间。
1.1、局部变量
1.2、函数传参
调用函数Func(str)时,传递地址,栈区分配一个4字节的指针来指向数组
1.3、指针
2、堆区stack
程序员分配并释放的区域,像malloc( c ), new(c++) ,成员变量(函数)
2.1、malloc( c )
2.2、new(c++)
2.3、成员变量、成员函数
本质也是通过new来实现,new之下的
3、全局数据区(静态区)
(个人觉得静态变量既然和全局变量存放在一起,说明性质非常接近)
全局变量和静态变量的存储是放在一块的:
初始化的全局变量和静态变量在一块区域,
未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。
程序结束释放。
4、代码区
4.1 #define
#define a 3
define 用作文本替代——将a全部替换为3,类似全局变量