[英]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數據,但是您的系統未配置為允許這樣做。
static
。 這些都應該起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.