数据段

17 Mar 2025 | 阅读 2 分钟

为了理解我们的 C 程序的工作方式,我们需要理解分配给程序的内存的排列方式。

所有变量、函数和数据结构都被分配到称为数据段的特殊内存段中。数据段主要分为四个不同的部分,这些部分专门分配给 C 程序中定义的不同类型的数据。

Data Segments

数据段的各个部分是:

1. 数据区

它是永久内存区域。所有静态和外部变量都存储在数据区中。存储在数据区中的变量在程序退出之前一直存在。

2. 代码区

这是只能通过函数指针访问的内存区域。代码区的大小是固定的。

3. 堆区

众所周知,C 支持动态内存分配。C 提供了 malloc() 和 calloc() 等函数,用于动态分配内存。因此,堆区用于存储使用动态内存分配创建的数据结构。堆区的大小是可变的,取决于内存中的空闲空间。

4. 栈区

栈区分为两部分:初始化和未初始化。初始化变量的优先级高于未初始化变量。

  1. 所有自动变量都在栈区获取内存。
  2. C 中的常量存储在栈区。
  3. 所有默认存储类的局部变量都存储在栈区。
  4. 函数参数和返回值存储在栈区。
  5. 栈区是临时内存区域,因为存储在栈区的变量在程序超出作用域时会被删除。
下一主题C 程序的流程