2012-02-22 124 views
0

當我做了我的遊戲,一切都很順利,但突然間我在土壤的負載圖片上出現了一個奇怪的例外。 在比賽開始時並沒有發生,它突然發生,這很奇怪。土壤異常C++

這裏的圖片: http://oi39.tinypic.com/vgj9y.jpg

這裏的代碼:

bool window::loadTex(std::string fName, int fNum) 
{ 
     textur[fNum] = SOIL_load_OGL_texture 
      (
      (char*)fName.c_str(), 
      SOIL_LOAD_AUTO, 
      SOIL_CREATE_NEW_ID, 
      SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y 
      ); 
     if(textur[fNum] == 0) 
      return false; 
     return true; 
} 

和函數調用:

if(!loadTex(std::string("data/back.png"), 0)) 
     printf("Can't load image"); 

它是如此怪異......當異常發生,我沒有做任何與土壤有關的事情。

有關於它在Dissambly中的更多信息,它可能有幫助嗎?

First-chance exception at 0x784FFDEE (msvcr100.dll) in ConsoleApplication6.exe: 0xC0000005: Access violation reading location 0x00000000. 

固定!非常感謝!

+2

您需要調試您的應用程序。 – 2012-02-22 15:56:40

+1

在調試器中,發生這種情況時'textur'的值是什麼? – 2012-02-22 15:59:28

+0

http://oi39.tinypic.com/ng98r8.jpg這是圖片的值 – 2012-02-22 16:01:53

回答

0

沒有什麼奇怪的。你有運行時錯誤。你的代碼中的某處可能會超出一些內存,這就是問題表現出來的方式。您需要在代碼中找到問題。

找到問題的一種方法是用調試器查看崩潰對象的錯誤。也許其中一個指針有無效的價值。如果這個指針中有垃圾的地址在運行之間是一致的,你可以在它的地址上放置一個數據中斷點,並且每次你點擊數據中斷點,誰在改變它,以及它是錯誤還是正常健康流。

+0

它說圖片的負載是例外,你是不是認爲它受到了委屈? – 2012-02-22 16:11:49

+0

@mentaman在某種程度上,是的。有時運行時錯誤不會在你犯「罪行」時表現出來,而是在此之後的相當一段時間。 – selalerer 2012-02-22 22:34:00

+0

我做了|| inplace |在sdl_init中,所以它被冤枉了。謝謝你的幫助。 – 2012-02-23 16:47:06