<分区>
当我这样做时:
vector<double> myVect(120000000, 0);
我可以让 vector 看起来像我想要的那样拥有尽可能多的元素。但是,当我这样做时:
double myArray[120000];
在我的程序崩溃之前,我被限制在大约 120000-130000 个元素。是不是出了什么问题,或者数组真的有这么有限吗?
<分区>
当我这样做时:
vector<double> myVect(120000000, 0);
我可以让 vector 看起来像我想要的那样拥有尽可能多的元素。但是,当我这样做时:
double myArray[120000];
在我的程序崩溃之前,我被限制在大约 120000-130000 个元素。是不是出了什么问题,或者数组真的有这么有限吗?
最佳答案
数组本身不限于任何固定大小,但您在自动存储(通常称为“堆栈”)中分配的数组仅限于堆栈的大小。当您在静态存储中分配大型数组时,您可以创建更大的数组。动态分配也是如此:无论您可以在不触发内存溢出的情况下分配多大的 vector ,您都可以使用 new
运算符创建一个相同大小的数组。
例如,您可以在不触发堆栈溢出的情况下执行此操作:
static double myArray[120000000]; // static memory area
或者这个:
double *myArray = new double[120000000]; // dynamic memory area
关于c++ - 超过 120000 个元素的数组崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18244551/