我想生成1亿个整数但是如果我超过这个数字,下面的代码就可以生成10万个数字我得到了一个停止工作错误。
#include <iostream>
#include <random>
#include <time.h>
using namespace std;
int main()
{
const int n = 100000;
int numbers[n] = {0};
srand(time(NULL));
for (size_t i = 0; i < n; i++)
numbers[i] = rand() % 100;
return 0;
}
答案 0 :(得分:0)
这是因为您正在使用堆栈而不是堆内存。请参阅与您的问题类似的this link。
请尝试以下代码:
const int n = 1000000;
int *numbers = new int[n];
// your code goes here
delete[] numbers;
return 0;
答案 1 :(得分:0)
你应该全局声明数组,因为在main中,数组是在stack.default限制是8Mb。但是如果你声明全局,那么数组存储在数据段上,该数据段的分配与可用内存一样多。
#include <bits/stdc++.h>
using namespace std;
const int n = 100000000;
int numbers[n] = {0};
int main()
{
srand(time(NULL));
for (size_t i = 0; i < n; i++)
numbers[i] = rand() % 100;
return 0;
}