C程序中的存储空间布局

C程序中的存储空间布局

从内存高地址到低地址,可分为:

  • 未初始化数据段
  • 初始化数据段
  • 正文段

正文段

  1. 主要内容为机器指令
  2. 只读
  3. 只需要一个副本,多次执行共享

初始化数据段

  1. 全局变量
  2. 内核在程序开始执行之前从文件读取值为其初始化
1
int a = 5;

未初始化数据段(Block Started by Symbol, BSS)

  1. 全局变量
  2. 内核在程序开始执行之前将其初始化为0NULL
    1
    int a[100];
    注意指针a是已初始化的,而a数组的内容是未初始化的,一般内核将a数组内容置为全0

  1. 动态内存分配的变量

  1. 局部变量
  2. 函数调用时保存的上下文