声明大小为150000的双数组时出错?

Jas*_*ora 0 c++

我正在开发一个代码,其中需要声明大小为150000的double的数组,并且当一个数组声明代码正在成功运行时.如果我们声明两个数组然后执行它终止抛出异常.

Code is :

double a[150000];
double b[150000];
Run Code Online (Sandbox Code Playgroud)

如果我们声明一个只有它然后它完美地执行.如果声明a和b然后它终止.谁能建议如何解决这个问题?

hmj*_*mjd 6

这两个数组溢出堆栈(假设它们是局部变量).为数组动态分配内存,使用a std::vector来管理内存:

std::vector<double> a(150000);
std::vector<double> b(150000);
Run Code Online (Sandbox Code Playgroud)

即使std::vector实例位于堆栈上,也会在std::vector内部为堆上的数据动态分配内存,从而避免堆栈溢出.