可能重复:
堆栈溢出 C++
我有以下用于生成素数的程序:
#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,但它停止在 main 那里给出段错误。我使用的是 64 位操作系统。即使我删除 MAX 并写 10000000 而不是 MAX,我也会得到同样的错误。我哪里错了?请帮忙。