我正在處理一個太空入侵者遊戲的一個非常奇怪的問題。基本上我得到一個訪問衝突錯誤: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