11 lines
852 B
Markdown
11 lines
852 B
Markdown
### .bss 段存放哪些数据
|
||
|
||
`.bss` 段,即未初始化数据段(**B**lock **S**tarted by **S**ymbol),主要存放**未初始化的全局变量和静态变量**
|
||
|
||
`.bss`段的特殊之处在于,它在可执行文件中**不占用任何实际的磁盘空间**。它只在可执行文件中有一个占位符,告诉操作系统在加载程序时需要为这块区域分配多大的内存。当程序被加载到内存后,操作系统会为 `.bss` 段分配一片连续的内存空间,并且会**自动将其所有字节初始化为零**
|
||
|
||
这种设计是为了节省可执行文件的大小。如果一个程序有很多未初始化的全局变量,将它们全部写进文件会非常浪费空间,因为它们的值都是已知的(默认是0)
|
||
|
||
- **例子**:
|
||
- `int uninitialized_global;`
|
||
- `static char static_array[1024];` |