【发布时间】:2013-04-19 06:22:14
【问题描述】:
我正在开发一个代码,其中需要声明大小为 150000 的双精度数组,当声明一个数组时,代码运行成功。如果我们声明两个数组,那么在执行时它会终止抛出异常。
Code is :
double a[150000];
double b[150000];
如果我们只声明a,那么它会完美执行。如果同时声明a和b,那么它就会终止。 谁能建议如何解决这个问题?
【问题讨论】:
-
Stackoverflow,对吧?给数组静态存储或使用
std::vector。 -
如果在函数中本地声明这些数组,它们的堆栈空间超过 2MB。在 Windows 上,默认堆栈大小仅为 1MB。
-
假设这些确实是局部变量,需要的空间是 2 * 8 * 150000(在 x86 上),大约是 2.2 MB。许多操作系统将进程的最大堆栈限制为小于该值。
-
使它们成为浮点数组。问题解决了!
-
@HotLicks - 问题已解决,但引入了新问题!
标签: c++