大家好我是石斑鱼,
最近小伙伴面试碰到的一个问题,C语言程序的组成?
这个问题比较考察基础,但刚毕业的同学平时也不一定会留意,于是总结一下。
C程序由哪些部分组成?或者说是内存构成?
先抛出答案,一个C程序由以下几个部分构成。
名称 | 内容 |
---|---|
BSS段 | 未初始化的全局变量、静态变量 |
数据段 | 已初始化全局变量、静态变量、常量数据 |
代码段 | 可执行代码、字符串常量 |
堆 | 动态分配内存 |
栈 | 局部变量、函数参数 |
C程序内存分布
- BSS段(BSS segment,Block Started by Symbol):
存储初始值为 0 的全局数据,或者说是存储未显式初始化的全局变量的内存区域。属于静态内存分配但不占用目标文件空间。
- 数据段(data segment):
存储初始值部不为 0 的全局数据,存储 static 声明的变量,属于静态内存分布,占用目标文件(编译后生成的可