Я хочу динамически объявить логический массив для моей программы на C ++ и установить его значение в false. У меня проблемы с выделением памяти. Я думаю, как и получая висячий указатель, я пытаюсь найти простые числа с помощью Sieve of Eratosthenes.пытаюсь использовать логический массив динамически, но сталкиваюсь с проблемами.
Я не пытаюсь реализовать его с помощью memset.
int limit = 2000000 ;
int crossLimit = sqrt(limit) ;
void SievePrime(int limit)
{
bool* boolArray = new bool[false] ;
for(int i =4;i<=limit ;i = i + 2)
{
boolArray[i] = true ; //getting error hereThread 1:
//EXC_BAD_ACCESS (code=2, address=0x100786000)
}
for(int j= 3 ;j<=crossLimit ; j= j+2){
if (not boolArray[j])
{
for(int k =j*j;k<=limit;k*=2)
{
boolArray[k] = true ;
}
}
}
double sum = 0 ;
for(int i =2 ; i<=limit ;i++)
{
if(!boolArray[i])
{
sum = sum + i ;
}
}
cout<<sum<<endl ;
}
ожидаемый вывод: 142913828922
ошибка: поток 1:EXC_BAD_ACCESS (код = 2, адрес = 0x100786000)