Mam bardzo dziwny problem z grą Space Invaders, nad którą pracuję. Zasadniczo pojawia się błąd naruszenia zasad dostępu:0xC0000005: Lokalizacja odczytu naruszenia dostępu 0x00000000
Unhandled exception at 0x5edad442 (msvcr100d.dll) in SpaceInvaders.exe: 0xC0000005: Access violation reading location 0x00000000.
, gdy dołączę poniższy fragment kodu. visual studio przenosi mnie do "strcmp.asm" podczas debugowania. Zauważ, że nie używam strcmp() w żadnym z moich kodów. Czy coś jest nie tak z kodem, czy jest to problem wykraczający poza zakres tego, co zawarłem? Dzięki za wszelką pomoc
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 konstruktora:
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 Constructor
MovingObject::MovingObject(const char *pic, int x, int y, int w, int h):picture(pic), positionX(x), positionY(y), width(w), height(h) {};
Pokaż kod wewnątrz konstruktora Invadera –
Komunikat o błędzie sugeruje, że jest to dereferencja wskaźnika pustego, ale nie widzę, gdzie to by się stało w kodzie. Oprócz konstruktora Invader, pokaż nam, gdzie/jak inicjowana jest również tablica invaders. Konstruktor kopiowania Invadera również może być interesujący, jeśli taki posiada. – Medo42
Właśnie zaktualizowałem OP z [email protected], tablica invader została właśnie zainicjowana jako zmienna globalna: "Invader invaders [55];" – Milk