分段内存模型:将内存划分为几个独立的区域,每个区域称为段,通过段寄存器中的指针来引用。每个段都被用来保存某种特殊的数据。
- Data segment: 数据段,主要用来保存声明的变量、常量等等。用.data和.bss表示。
- Code segment: 代码段,主要用来保存指令代码。用.text表示。
- Stack segment: 栈段,主要用来保存程序执行期间函数的调用及其相关的数据,例如局部变量等。
补充两个术语:
-
Fixed Area: 这指的是一个固定的内存区域,它的大小在程序运行时是不变的。
-
Zero-Filled: 这表示一个内存区域在被分配之后会被自动填充为零。在.bss段中,程序员可以声明未初始化的静态变量。这些变量在程序开始执行之前并不占用实际的内存空间,但它们会被内存分配器标记为需要一定大小的空间。当程序开始执行时,这些未初始化的变量会被自动初始化为零值,因此.bss段也被称为零填充段。这种自动初始化可以确保程序在使用这些变量之前,它们已经具有可预测的初始值(零值)。