访问 2D 数组时的读取冲突
Read Violation when Accessing 2D array
当我尝试访问应该在 2D 数组内的地址时,我遇到了一个非常奇怪的读取冲突错误。请阅读我的几行代码:
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 2D 数组由指向 Dirt 对象的指针和 nullptrs 组成
当我尝试调试程序时,它告诉我 x 和 y 在 2D 数组的边界中总是很好,比如 x=21、y=14。但是无论x和y的值是什么,我总是得到错误。
请帮忙。多谢!
假设调试器给出了访问冲突的正确位置,让我们继续消除:
-
DirtField
是一个固定的 64x60 阵列。所以DirtField
不能是 nullptr,读取访问错误不能来自DirtField
的分配。 - 如果已检查
x
和y
都在范围内,则读取访问错误也不能来自对阵列的越界访问。 -
DirtFiled[x][y]
包含一个指向Dirt
的指针,您可以将其与其他指针进行比较,而不会取消对其中任何一个的引用。 因此,Dirt
类或DirtField
数组的内容也不是问题。
剩下的唯一问题是,您调用checkDirt()
的对象本身无效。 像这样:
Class *myobject; // unitinialized pointer
myobject->checkDirt(21,14);
相关文章:
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- 读取访问冲突.这0xCDCDCDCD
- 0xC0000005:访问冲突读取位置 0x00000000. 重载 == 运算符的问题
- 尝试通过共享指针使用变量时读取访问冲突
- C++ 读取访问冲突,0xCDCDCDCD
- 读取缓冲区时访问冲突 UNICODE_STRING
- 从二进制文件中读取元素时引发异常(引发异常:读取访问冲突. _Pnext 0xB414D4)
- 使用智能指针读取访问冲突
- 引发异常:读取访问冲突.**此**0x40错误
- (此函数用于计算 SMA).在 FA.exe 中0x00509159引发异常: 0xC0000005:访问冲突读取位置0
- 使用 Win32 读取文件时,glShaderSource 访问冲突
- 函数 AfxEndThread 中的读取访问冲突"pThread-> was nullptr"
- 0xC0000005:读取位置0xCDCDCDC1时发生访问冲突
- 使用 vtkDICOMWriter 编写 DICOM 时访问读取冲突
- 从结构传递数组成员会导致访问读取冲突
- 访问用于对象的向量时读取冲突
- 将两个字符串一起分配,获取访问读取冲突
- 访问 2D 数组时的读取冲突
- C/C++ 未处理的读取冲突
- 0xccccc处的访问读取冲突