簡體   English   中英

500萬個隨機數程序無法運行

[英]5 million random number program won't run

我正在嘗試編寫一個在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;
}

每次我運行它時,什么都沒有發生,並且程序崩潰了。 我似乎找不到我在做什么錯,因為代碼是如此簡單。 有人可以幫幫我嗎? 謝謝。

long numbers[5000000];

將嘗試分配500萬* sizeof(long)個字節的堆棧。 這幾乎肯定會溢出。

您可以將變量移動為具有靜態持續時間

static long numbers[5000000];

或者您可以動態分配它

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

您正在堆棧上分配20 MiB數據,但是您的系統未配置為允許這樣做。

  1. 如果只打印它們,則無需保存其中的任何一個。
  2. 您可以將變量設置為static
  3. 您可以動態分配數組。

這些都應該起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM