由于程序停止工作,生成大量数字失败

时间:2018-03-04 18:49:09

标签: c++

我想生成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;
}

2 个答案:

答案 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;
}