我正在处理一个太空入侵者游戏的一个非常奇怪的问题。基本上我得到一个访问冲突错误:0xC0000005:访问冲突读取位置0x00000000
Unhandled exception at 0x5edad442 (msvcr100d.dll) in SpaceInvaders.exe: 0xC0000005: Access violation reading location 0x00000000.
当我包括下面的代码段。调试时,visual studio带我到“strcmp.asm”。请注意,我没有在我的任何代码中使用strcmp()。代码有什么问题,或者这是一个超出我所包含的范围的问题?感谢您的帮助
const char* invarray[] = {"invader0.png", "invader1.png", "invader2.png", "invader3.png", "invader4.png"};
int i=0;
//Creates 55 invaders
for (int y=0; y<250; y+=50){
for (int x=0; x<550;x+=50){
Invader inv(invarray[y/50], x+50, y+550, 15, 15, 1, false, 250);
invaders[i] = inv;
}
}
侵略者的构造函数:
Invader::Invader(const char *pic, int x, int y, int w, int h, bool dir, bool des, int point) : MovingObject(pic, x, y, w, h) , direction(dir), destroyed(des), b(0), points(point){};
MovingObject构造
MovingObject::MovingObject(const char *pic, int x, int y, int w, int h):picture(pic), positionX(x), positionY(y), width(w), height(h) {};
在Invader的构造函数中显示代码 –
错误消息表明这是一个空指针解引用,但是我看不到这会在您的代码中发生。除了入侵者构造函数之外,请告诉我们入侵者数组的初始化位置/方式。 Invader的拷贝构造函数也可能很有趣,如果它有的话。 – Medo42
我刚刚用构造函数更新了OP。@Medo,入侵者数组刚被初始化为全局变量:“Invader invaders [55];” – Milk