【发布时间】:2013-06-06 10:48:50
【问题描述】:
我正在使用 Dev C++ 编写一个模拟程序。为此,我需要声明一个数据类型为double 的一维数组。它包含4200000 元素——比如double n[4200000]。
编译器没有显示错误,但程序在执行时退出。我已经检查过了,程序对于具有5000 元素的数组执行得很好。
现在,我知道不建议在堆栈上声明这么大的数组。然而,问题是模拟需要我多次调用数组中的特定元素 - 例如,对于给定的计算,我可能需要 n[234] 或 n[46664] 的值。因此,我需要一个更容易筛选元素的数组。
有没有办法可以在堆栈上声明这个数组?
【问题讨论】:
-
对于 Linux/gcc,请参见 stackoverflow.com/questions/2279052/…,对于 Windows/gcc,请参见 stackoverflow.com/questions/156510/…,对于 MSVC,请参见 msdn.microsoft.com/en-us/library/tdkhxaks%28v=vs.110%29.aspx - 参见此处。
-
我不认为你可以使用
std::vector<double> ar(4200000);吗?其余的仅使用常规数组白话进行索引等。 -
完全不清楚为什么这个数组需要在堆栈上。当您从堆中分配它时,它也能正常工作。
-
对于 Visual Studio:visual studio - Increase stack size in c++ - Stack Overflow
标签: c++ arrays memory stack allocation