我被要求完成其他人开始的一些代码,并且我对如何在结构中复制 U32 值完全感到困惑。这些是各种结构的相关部分;请注意,我进行了很多修剪,因为这些是一些非常巨大的结构:
typedef struct AttackerList {
U32 count;
} AttackerList;
typedef struct AggroVars {
AttackerList attackerList;
}
typedef struct Player {
U32 aiAttackers;
}
现在,在我尝试修改的函数中:
void attackTarget(Player* target) {
AggroVars* aiTarget;
// Tons of code here.
aiTarget->attackerList.count++;
target->aiAttackers = aiTarget->attackerList.count;
// Tons more code here.
}
最后一行让我感到各种悲伤。它确实有效,我可以在调试输出中看到有多少小动物正在攻击玩家;但每当人工智能对目标失去兴趣时,它就会导致崩溃。我知道这与指针有关,但在代码上撒上星号会导致“无效间接”或“间接级别不同”。我对如何在没有任何奇怪的指针内容的情况下检索 aiTarget->attackerList.count 的值感到非常困惑。
最佳答案
您需要首先为每个结构分配内存,因此在代码中进行以下更改
void attackTarget(Player* target)
{
AggroVars* aiTarget = malloc(sizeof(AggroVars));
aiTarget->attackerList.count++;
target->aiAttackers = aiTarget->attackerList.count;
}
关于c - 尝试从结构中检索 U32 时程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21043214/