gpt4 book ai didi

c++ - 无法访问地址为 0x 的内存

转载 作者:行者123 更新时间:2023-11-28 05:52:08 25 4
gpt4 key购买 nike

我有这个项目,我必须创建一个对象社会(creatures),这是一个单独的对象。我试图通过在 creature_society 的构造函数中初始化指向对象 creature 的指针数组来做到这一点(好的和坏的生物是继承类生物的类摘要)

creature_society::creature_society(int n, int L, int good_thrsh, int bad_thrsh)
{
int a;
creature **cArray = new creature * [n];
gthrsh = good_thrsh;
bthrsh = bad_thrsh;

for(i = 0; i < n; i++)
{
a = rand() % 2 ;
if(a == 1)
cArray[i] = new good_creature(L, i);
else
cArray[i] = new bad_creature(L, i);

cout<< "\nhp is "<< cArray[i]->gethp() << "\n" << endl;
}
}

一切正常,创建了生物社会和生物,但是当我尝试通过生物类函数更改 cArray[i] 的值时,例如

void creature::bless()
{
if(!is_a_zombie())
hp++;
}

我得到了一个段错误并且我得到了消息

cannot access memory at address 0x..

所以我的问题是,为什么我会得到它? cArray 初始化有问题吗?

最佳答案

cArray 在 creature_society::creature_society 期间设置

creature **cArray=new creature * [n];

在这个方法之外,你不能访问这个变量。如果你有另一个(全局?)变量 cArray,这将不会改变并且可能保持在值 0,因此指向地址 0x。

关于c++ - 无法访问地址为 0x 的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35015063/

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