【问题标题】:5 million random number program won't run500万个随机数程序不会运行
【发布时间】:2013-10-20 03:41:07
【问题描述】:

我正在尝试编写一个在 C++ 中生成 500 万个不同随机数的程序。下面是代码:

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

int main() {
    unsigned before = clock();
    srand(time(NULL));
    long numbers[5000000];
    for (int i = 0; i < 5000000; i++)
        numbers[i] = rand() % 5000000;
    for (int i = 0; i < 5; i++)
        cout<<numbers[i]<<endl;
    cout<<clock() - before<<endl;
    return 0;
}

每次我运行它时,什么都没有发生,程序在我身上崩溃了。我似乎找不到我做错了什么,因为代码是如此简单。有人可以帮帮我吗?谢谢。

【问题讨论】:

标签: c++ date random time


【解决方案1】:
long numbers[5000000];

将尝试分配 500 万 * sizeof(long) 字节的堆栈。这几乎肯定会溢出。

您可以将变量移动为具有静态持续时间

static long numbers[5000000];

或者你可以动态分配它

long* numbers = new long[5000000];
// calculations as before
delete [] long;

【讨论】:

  • std::vector&lt;long&gt; numbers(5000000);
【解决方案2】:

您在堆栈上分配了 20 MiB 的数据,但您的系统未配置为允许这样做。

  1. 如果您只是打印它们,则不需要保存它们。
  2. 您可以将变量设为static
  3. 您可以动态分配数组。

其中任何一个都应该工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多