首页 > 后端开发 > C++ > C 中的全局变量在哪里存储它们的内存:堆栈还是堆?

C 中的全局变量在哪里存储它们的内存:堆栈还是堆?

DDD
发布: 2024-12-02 09:22:11
原创
969 人浏览过

Where Do Global Variables in C   Store Their Memory: Stack or Heap?

C 中全局变量的内存分配:堆栈与堆

在 C 中,当全局声明数据结构时,会出现以下问题:它消耗堆栈内存或堆内存。为了理解这一点,我们深入研究典型 C 进程的内存布局。

C 进程的内存布局

C 进程通常分配五个不同的内存区域:

  1. 代码(文本段)
  2. 初始化数据(数据段)
  3. 未初始化数据(bss段)
  4. 堆栈

全局变量分配

当声明一个全局变量时,它的内存要么分配在数据段中,要么分配在bss 段。

  1. 数据段: 包含初始化的全局变量。它的大小在编译时是固定的。
  2. Bss段:包含未初始化的全局变量。它的大小在编译时也是固定的,但其内容默认初始化为零。

因此,全局变量存储在 data 段或 bss 段中,它们是 的一部分静态内存 分配给program.

示例

在给定的示例中,数组 arr 是 struct AAA 类型的全局变量。它将被分配在数据段或 bss 段中,具体取决于它是已初始化(具有默认值)还是未初始化(包含垃圾值)。

结论

总之,C 中的全局数据结构消耗分配给程序的静态内存中的内存,特别是数据段或 bss 段,它们不属于堆栈或堆内存区域。

以上是C 中的全局变量在哪里存储它们的内存:堆栈还是堆?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板