C 中全局变量的内存分配:堆栈与堆
在 C 中,当全局声明数据结构时,会出现以下问题:它消耗堆栈内存或堆内存。为了理解这一点,我们深入研究典型 C 进程的内存布局。
C 进程的内存布局
C 进程通常分配五个不同的内存区域:
全局变量分配
当声明一个全局变量时,它的内存要么分配在数据段中,要么分配在bss 段。
因此,全局变量存储在 data 段或 bss 段中,它们是 的一部分静态内存 分配给program.
示例
在给定的示例中,数组 arr 是 struct AAA 类型的全局变量。它将被分配在数据段或 bss 段中,具体取决于它是已初始化(具有默认值)还是未初始化(包含垃圾值)。
结论
总之,C 中的全局数据结构消耗分配给程序的静态内存中的内存,特别是数据段或 bss 段,它们不属于堆栈或堆内存区域。
以上是C 中的全局变量在哪里存储它们的内存:堆栈还是堆?的详细内容。更多信息请关注PHP中文网其他相关文章!