以下代码在2Gb机器上运行时给出了分段错误,但在4GB机器上运行.
int main()
{
int c[1000000];
cout << "done\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
阵列的大小只有4Mb.可以在c ++中使用的数组大小是否有限制?
此代码在数组声明期间产生分段错误.我很困惑为什么会这样.我故意选择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) 可能重复:
C编程,为什么这个大型数组声明会产生分段错误?
我正在用c语言阅读图像,但我无法这样做,因为我的程序在两者之间停止...在调试之后我发现它是由于数组大小...对数组的最大大小有任何限制吗?如果我声明大小为1400X1400的数组一切正常但如果我定义大小为1600X1400的数组我的程序停止工作......为什么它是这样...编译器或操作系统对数组大小有任何限制?如果是这样,c的解决方案是什么.
unsigned char idata[1400][1400]; //working fine
unsigned char idata[1600][1400]; //not working
Run Code Online (Sandbox Code Playgroud)