一.内存管理
计算机为了便于管理,被分为了三大部分。堆栈段,数据段和代码段。
- 其中堆栈段分为堆内存和栈内存
- 数据段分为全局变量和只读区;
- 代码段只储存函数的首地址
二 编译过程
其过程可分为编辑,预处理,编译,链接和执行五个各阶段,我们主要重点讨论预处理,编译,链接和执行四个阶段
-
- 预处理:会将源代码文件分解为语法单元去掉注释,将预处理字符和包含的内容展开(如define和include),不会对错误进行检测,
-
- 编译 :分为汇编和只编译两步,编译器检测分析语法单元,检查源代码的有效性,成功会有机器码,符号
-
- 链接 :链接器解析对外部变量和函数引用找到符号(唯一的),有时会有链接库文件,确定数据段和代码段,产生可执行文件。(在一个可执行的程序,一定不能重复定义外部变量和函数)
-
- 操作系统将可执行的程序加载到内存区域;cpu执行指令,读取数据,确定堆栈段地址。(./为可执行程序)