【发布时间】:2016-12-07 15:33:24
【问题描述】:
简单的问题: 我的代码块能够编译下面的代码并且运行良好:
int a[2000000];
我的代码块能够编译下面的代码但我的程序在之后立即崩溃:
int a[2000000];
int b[2000000];
1) 原因是什么?为什么? (我的 ram 16 GB !!而这只花了 0.3MB 那么有什么问题?)
2) 如何修复或使用替代方式? (但我需要创建这么多的数组)
3) 有没有办法增加数组的内存?
相关问题(我是这么认为的):
我的代码块能够编译下面的代码并且运行良好:
unsigned long int a=100000000000;
我的代码块能够编译下面的代码但是我的程序在我输入相同的数字(100000000000)后立即崩溃:
unsigned long int a;
cin>>a;
怎么办?
【问题讨论】:
-
可能是堆栈溢出。一般来说,忘记数组并使用
std::vector或其他标准容器。 -
我认为任何 c++ 初学者都不需要声明一个大小为
2000000的数组 -
您真的需要这么多的自动存储吗?如果这样做,则必须增加堆栈限制。
-
我对欺骗关闭的问题是它是一个 C 问题。已接受答案中的补救措施提供了在 C++ 中不是最佳实践/推荐的建议。
-
@NathanOliver:好点。我没有注意到这一点。这个会更好吗? stackoverflow.com/q/9016538/10077