Здесь (неполный) код, чтобы найти некоторые простые числа.
#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.
Хотя результирующий массив не может быть действительно огромным, он находится в стеке с ограниченным (и зависящим от платформы) размером (например, 1 МБ является популярным размером). Попробуйте создать объект с помощью new
оператора, вместо этого он будет помещен в кучу.