简单问题: 我的代码块能够编译下面的代码并运行良好:
int a[2000000];
我的代码块能够编译下面的代码但我的程序在之后立即崩溃:
int a[2000000];
int b[2000000];
1)原因是什么?为什么? (我的公羊16 GB !!这只花了0.3MB所以问题是什么?)
2)如何修复或使用替代方式? (但我需要创建如此多的数组)
3)有没有办法增加数组的内存?
相关问题(我认为是这样):
我的代码块能够编译下面的代码并运行良好:
unsigned long int a=100000000000;
我的代码块能够编译下面的代码但我的程序在输入相同的数字后立即崩溃(100000000000):
unsigned long int a;
cin>>a;
怎么办?
答案 0 :(得分:4)
int a[2000000];
这会溢出你的堆栈限制。您可以使用std::vector<int> a(2000000);
代替,它将使用动态存储分配(理论上无限制)。
答案 1 :(得分:1)
编译的可执行文件具有堆栈限制
如果没有此选项,堆栈大小默认为1 MB。
您的代码溢出了堆栈空间
int a[2000000];
Stack是一种宝贵的有限资源,如果你需要分配大量的内存,考虑在堆中进行。