2013-07-15 44 views
2

0x00814477第一次機會異常只有一個more.exe的時間:0xC0000005:訪問衝突讀取位置0x00000008。 0x00814477處未處理的異常只有一個more.exe的時間:0xC0000005:訪問衝突讀取位置0x00000008。我該如何修復此錯誤訪問衝突讀取位置0x00000008

//我相信這事做與NULL和操作系統,但我不能確定如何解決這一問題

GameObject::GameObject() 
{ 
    sprite = NULL; 
    pos.x = 0; pos.y = 0; 
    vel.x = 0; vel.y = 0; 

    framenum = 0; 
    numframes = 0; 
} 

GameObject::~GameObject() 
{ 
    if (sprite != NULL) 
     SDL_FreeSurface(sprite); 
} 

void GameObject::LoadImage(std::string filename) 
{ 
    sprite = IMG_Load(filename.c_str()); 
    //clip.x = 0; 
    //clip.y = 0; 
    clip.w = sprite->w;   //It breaks here 
    clip.h = sprite->h;   // and here 
} 
+0

IMG_Load返回Null,因爲它無法訪問您要加載的圖像。你也應該發佈你如何實現實際功能,因爲你可能錯誤地輸入了文件名。我對SDL知之甚少,但它可能不支持所有圖像類型,可能會拋出此錯誤,因爲它無法加載您指定的文件類型。 – moonbeamer2234

+0

這個問題似乎是無關緊要的,因爲它是關於代碼中的一個非常具體的錯誤,並不可能幫助未來的訪問者。這就是「過於本地化」的原因。 –

回答

6

調用該函數:

sprite = IMG_Load(filename.c_str()); 

可能返回NULL。您應該查看相關文檔,瞭解可能的原因並糾正相關錯誤。

+0

感謝您對C++的新迴應,甚至對SDL更新,我感謝您的幫助。 –

5

雪碧似乎是空的。檢查IMG_Load的返回。很有可能你的文件名不正確。