此代码在数组声明期间产生分段错误.我很困惑为什么会这样.我故意选择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;
}
Run Code Online (Sandbox Code Playgroud)
Jam*_*lis 21
嗯,首先,这是20亿个整数.如果您的平台上有32位地址空间且int
大小为4个字节(通常是32位平台),则无法存储那么多整数.
即使如此,您在堆栈上只有很多可用空间,这是自动变量所在的位置.
如果你需要一个非常大的数组,你应该使用dyncamically分配它malloc()
(如果你这样做,一定要free()
在你完成它时使用它!).