运行a.out,操作系统会在RAM中给程序分配一块内存,由低地址到高地址依次是 text段,初始化数据,未初始化数据,堆,栈,环境变量。

| 各部分 | 说明 |
|---|---|
| text段 | 自然语言程序经过编译之后的内容,都是0和1组成 |
| 初始化数据 | 初始化的全局变量和静态变量 |
| 未初始化数据 | 未初始化的全局变量和静态变量 |
| 堆 | 由系统分配,通过new 和malloc函数获得内存,由低向高地址存储 |
| 栈 | 函数入参,函数内定义局部变量,函数调用结束后的返回地址都是在栈中存储,由高到低地址,函数A调用函数B,函数A的变量等数据存储在栈的某处,调用B,B的数据会在A之上,B调用完成,内存归还,继续执行A |
| 环境变量 | 记录一些程序运行的环境变量之类 |