文章目录
执行过程:
- 预处理:宏定义展开、头文件展开、条件编译、这里不会检查语法
- 编译:检查语法、将预处理后文件编译生成汇编文件
- 汇编:将汇编文件生成目标文件(二进制文件)
- 链接:将目标文件链接为可执行程序
内存分区:
运行前:
代码区:
- 共享
- 只读
数据区:
- data已初始化的全局变量、静态变量、常量
- bss未初始化的全局变量、静态变量、常量
运行后:
栈区
- 属于先进后出的数据结构
- 由编译器管理数据开辟和释放
- 变量的生命周期在该函数结束后自动释放掉
堆区
- 容量远远大于栈
- 没有先进后出这样的数据结构
- 由程序员管理开辟(malloc)和管理释放(free)
- 记住手动开辟的要手动释放