当我做:
vector<double> myVect(120000000, 0);
Run Code Online (Sandbox Code Playgroud)
我可以让矢量看起来像我想要的那么多元素.但是,当我这样做时:
double myArray[120000];
Run Code Online (Sandbox Code Playgroud)
在我的程序崩溃之前,我被限制在大约120000-130000个元素的某个地方.有什么东西搞砸了或阵列真的有限吗?
数组本身不限于任何固定大小,但您在自动存储中分配的数组(通常称为"堆栈")仅限于堆栈的大小.在静态存储中分配大型数组时,可以制作更大的数组.动态分配也是如此:无论您在不触发内存溢出的情况下分配的向量大小,您都可以使用new运算符创建相同大小的数组.
例如,您可以在不触发堆栈溢出的情况下执行此操作:
static double myArray[120000000]; // static memory area
Run Code Online (Sandbox Code Playgroud)
或这个:
double *myArray = new double[120000000]; // dynamic memory area
Run Code Online (Sandbox Code Playgroud)