gpt4 book ai didi

c++ - 使用动态 boolean 数组的问题

转载 作者:搜寻专家 更新时间:2023-10-31 02:02:39 28 4
gpt4 key购买 nike

我想为我的 C++ 程序动态声明一个 boolean 数组并将其值设置为 false。我在内存分配方面遇到问题我猜如何得到一个悬空指针我正在尝试通过埃拉托色尼筛法查找素数我正在尝试动态使用 boolean 数组但面临问题。

我并没有尝试使用 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)

最佳答案

我感觉您是 C++ 新手。

“false”通常为零,因此您没有分配任何东西。

bool* boolArray = new bool[false] ;

尝试:

bool* boolArray = new bool[limit];


for(int i =0; i<limit; i+)
{
boolArray[i] = false;
}

最后删除:

delete boolArray;

此外,该循环将越界。如果你有 N 项,最后一个有效条目是 N-1,因为第一个是 0。所以使用 k<limit在 for 循环中。

关于c++ - 使用动态 boolean 数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56974153/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com