склонение битов вызывает SIGSEGV

Вот (неполный) код, чтобы найти некоторые простые числа.

#include<iostream>
#include<bitset>
#include<cmath>

#define SQRT_10_POW_12 1000000llu
#define _10_POW_12_BY_2 1000000000000llu/2llu

using namespace std;

int main()
{
unsigned int T;
unsigned long long n;
register unsigned int it1,it2;

bitset<SQRT_10_POW_12+1llu> isprime;
bitset<_10_POW_12_BY_2+1llu> nums;

return 0;
}

Программа вылетает с SIGSEGV при объявлении isprime,
В чем проблема ?
Как мне решить это?

Использование Ubuntu 14.04, g ++ — 4.8.1.

0

Решение

Хотя результирующий массив может быть не очень большим, он находится в стеке, который имеет ограниченный (и зависит от платформы) размер (например, 1 МБ является популярным размером). Попробуйте создать объект с new оператор, он будет помещен в кучу вместо.

2

Другие решения


По вопросам рекламы [email protected]