gpt4 book ai didi

c - 变量/数组的行为

转载 作者:行者123 更新时间:2023-11-30 18:30:47 25 4
gpt4 key购买 nike

我有两个程序:

program 1:    
----------
#include<stdio.h>
int main()
{
int a[10];
return 0;
}

program 2:
----------
#include<stdio.h>
int a[10];
int main()
{
return 0;

}

1) 两个程序都可以为数组a[10]分配内存。
2)如果两个程序都是分配内存,则分配的是哪个内存段(我指的是数据段或堆栈段)。
3)谁能解释一下程序1和程序2之间有什么区别?

最佳答案

程序1:

  • 数组在堆栈上分配
  • 因为它位于堆栈上且未初始化,所以它将包含堆栈上的所有内容;我们称之为垃圾。

程序2:

  • 该数组是全局数组,分配在.data数据段中(除非链接器文件中另有指定)
  • 它实际上位于 .bss 部分,该部分是 .data 的一部分(通常)。这是所有未初始化的全局变量结束的地方。
  • 它自动初始化为0。

关于c - 变量/数组的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29075362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com