在main函数内启动数组(大小:20000001)抛出SIGSEGV

时间:2018-06-13 10:02:52

标签: c++ arrays

我尝试启动一个bool数组,其大小为20000001.代码如下:

#include <iostream>
#include <cstring>
using namespace std;
int main(){
const unsigned long long int size = 20000001;
bool prime[size];

return 0;
}

然后我成功编译它,但是当我运行它时,Windows会发出一个停止运行的消息,而GDB只会抛出SIGSEGV (Segmentation fault)。 但是在我在main函数外部启动数组(相同大小)之后,代码看起来像这样:

    #include <iostream>
    #include <cstring>
    using namespace std;
    bool prime[size];
    int main(){
    const unsigned long long int size = 20000001;
    memset(prime,true,size);

    return 0;
    }

不会抛出任何错误,程序也能顺利运行 所以我的问题是,导致SIGSEGV信号的原因是什么?它与堆栈溢出有关吗?

0 个答案:

没有答案