我已經生成素數下面的程序:
#include<iostream>
#include<cmath>
#include<algorithm>
#define MAX 10000000
using namespace std;
int main(int argc, const char *argv[])
{
bool prime[MAX+1];
fill_n(prime,MAX+1,true);
int baseSqrt,i,j;
baseSqrt = int(sqrt(MAX+1));
for(i=2;i<=baseSqrt;i++){
if(prime[i]){
for(j=i+i;j<=MAX;j+=i){
prime[j]=false;
}
}
}
return 0;
}
的程序MAX工作正常值= 1000000.但是,當我將值增加到10000000時,程序給出了段錯誤。我嘗試過使用gdb,但它停止在主要給segfault那裏。我正在使用64位操作系統。即使我刪除MAX並寫入10000000而不是MAX,我也會得到相同的錯誤。我哪裏錯了?請幫忙。
與您可以使用的內存總量相比,堆棧的大小通常非常有限 – chris