gpt4 book ai didi

C编程,这个大数组声明为什么会产生段错误?

转载 作者:太空狗 更新时间:2023-10-29 17:26:58 24 4
gpt4 key购买 nike

此代码在数组声明期间产生段错误。我很困惑为什么会这样。我有意选择 2000000000 作为值,因为它低于 2^31 并且可以放入整数变量中。

int main()
{

int nums_size = 2000000000;

int nums[nums_size];

int i;
for(i = 0; i < nums_size; i++) {
nums[i] = i;
}


return 0;

}

最佳答案

嗯,一方面,这是 20 亿个整数。如果你有一个 32 位地址空间并且 int 在你的平台上有四个字节的大小(典型的 32 位平台),你不能存储那么多整数,句号。

即使如此,您在堆栈上也只有这么多可用空间,这是自动变量所在的位置。

如果你需要一个非常大的数组,你应该使用 malloc() 动态分配它(如果你这样做,一定要使用 free() 释放它当你完成它!)。

关于C编程,这个大数组声明为什么会产生段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3049934/

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