gpt4 book ai didi

c++ - 访问二维数组时读取冲突

转载 作者:行者123 更新时间:2023-11-28 05:49:37 26 4
gpt4 key购买 nike

当我尝试访问本应位于二维数组内的地址时,我遇到了一个非常奇怪的读取冲突错误。请阅读我的几行代码:

Class class : public SuperClass
{
public:
bool checkDirt(int x, int y)
{
if(DirtField[x][y] != nullptr) //read violation error given here
................

private:
Dirt* DirtField[64][60];
}

DirtField 二维数组由指向 Dirt 对象的指针和 nullptrs 组成

当我尝试调试程序时,它告诉我 x 和 y 总是在二维数组的边界内,比如 x=21,y=14。但无论 x 和 y 是什么值,我总是会得到错误。

请帮忙。非常感谢!

最佳答案

让我们假设调试器给出了访问冲突的正确位置,让我们继续消除:

  • DirtField 是一个固定的 64x60 数组。所以DirtField不能是nullptr,读访问错误也不能来自DirtField的分配。
  • 如果您检查过xy 都在范围内,则读取访问错误也不会来自对数组的越界访问。
  • DirtFiled[x][y] 包含一个指向 Dirt 的指针,您可以在不取消引用任何一个的情况下将其与另一个指针进行比较。因此,这既不是 Dirt 类的问题,也不是 DirtField 数组的内容的问题。

剩下的唯一问题是您调用 checkDirt() 的对象本身无效。像这样的东西:

Class *myobject;  // unitinialized pointer 
myobject->checkDirt(21,14);

关于c++ - 访问二维数组时读取冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35530557/

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