小编duk*_*kky的帖子

使用> 2GB内存时,Cygwin g ++ x86_64分段故障(核心转储)

我用c ++编写了一个主筛程序,它使用~12GB ram来计算低于100,000,000,000(1000亿)的所有素数.

使用Visual Studio 2012(在为x64设置的项目中)以及64位linux上的g ++编译时,该程序工作正常.但是,当在Windows 7 Home Premium 64位上用cygwin64中的g ++编译时,尝试使用超过~2GB的ram(运行筛子> ~17,000,000,000)时会发生分段错误

我很确定它是作为64位进程运行的,因为任务管理器中的进程名称旁边没有*32.

代码:

#include <iostream>
#include <vector>
#include <cmath>
#include <cstdlib>
using namespace std;

long long sieve(long long n);

int main(int argc, char** argv) {
    const long long ONE_BILLION = 1000*1000*1000;
    if(argc == 2)
        cout << sieve(atol(argv[1])) << endl;
    else
        cout << sieve(ONE_BILLION * 100) << endl;
}

long long sieve(long long n) {
    vector<bool> bools(n+1);
    for(long long i = 0; i <=n; i++) 
        bools[i] = true;

    double …
Run Code Online (Sandbox Code Playgroud)

c++ memory cygwin g++ segmentation-fault

5
推荐指数
1
解决办法
3854
查看次数

标签 统计

c++ ×1

cygwin ×1

g++ ×1

memory ×1

segmentation-fault ×1