我想知道你可以在数组中存储多少个数字?
srand (time(NULL));
int array[10000000];
for(int i = 0; i < 10000000; i++){
array[i] = (rand() % 10000000) + 1;
}
每次我想在数组中存储 10.000.000 个数字时,我的程序都会崩溃 (Eclipse)。我什至尝试了 Visual Studio,但它崩溃了。
所以我想知道我可以在数组中存储多少个数字,或者我的代码有问题吗?
最佳答案
您可以存储多少个数字,但您不能那样做。您的程序崩溃的原因是您正在使用分配在“堆栈”上的“自动”变量。堆栈的大小通常比“堆”更受限制,因此使用如此大的自动变量可能会导致...等待它...
堆栈溢出!
相反,试试这个:
int* array = new int[10000000];
然后在使用之后:
delete[] array;
第二步是学习智能指针;对于这种情况,您可以使用 boost::scoped_array
之类的东西,但是根据您喜欢的库(或者如果您有 C++11),有很多选项。
如果你有 C++11,你可以使用“RAII”来避免需要记住何时何地调用 delete。只需这样做即可分配数组:
std::unique_ptr<int[]> array(new int[10000000]);
或者只使用一个 vector ,它总是动态分配它的内容(“在堆上”,笼统地说):
std::vector<int> array(10000000); // 10000000 elements, all zero
关于c++ - 是否可以在数组中存储 1000 万个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22578879/