前言:本章主要讲解代码段、数据段、bss段
编译器在编译程序的时候,程序会按照一定的结构被划分为各个不同的段进行组织,这些段有.text、.bss、.data等
代码段(.text):代码段存放的是程序的代码部分,程序中的各种函数的指令就存放在该段。(代码段是只读的)
数据段:也被称为数据区,静态数据区、静态区,程序中的静态变量空间就存放于此。
.bss段,又叫ZI段,所有未初始化的静态变量的空间都存放在这里,这个段会自动将这些未初始化静态空间初始化为0.
需要清楚的是,数据段和.bss段没有多大的区别,都是用来存放程序中的静态变量,只是.data中存放的是显式初始化为非0的静态数据,而.bss中则存放那些显示初始化为0或未显式初始化的静态数据。
注意事项:
c语言中使用char *p = "hello world",字符串是分配到代码段的,因此"hello world"字符串实际上是一个常量字符串,而不是一个变量字符串。