2012-02-22 8 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

アプリケーションをデバッグする必要があります。 –

+1

デバッガでは、これが起きたときに 'textur'の値は何ですか? –

+0

http://oi39.tinypic.com/ng98r8.jpgこれは値 –

答えて

0

何も変わりません。実行時エラーがあります。おそらくあなたのコードのどこかであなたはいくつかのメモリをオーバーランさせてしまい、これが問題の現れ方です。コード内で問題を見つける必要があります。

問題を見つける1つの方法は、クラッシュが発生しているオブジェクトに何が問題なのかをデバッガで調べることです。たぶんそこにポインタの1つが無効な値を持っています。ガベージを持つこのポインタのアドレスが実行間で一貫している場合は、そのアドレスにデータブレークポイントを設定し、データブレークポイントをヒットするたびに、それを変更しているときや、エラーか正常かを確認できますフロー。

+0

それは例外が画像の負荷にあったと言った、あなたはそれが間違っているという意味ですか? –

+0

@mentamanところで、はい。時にはランタイムエラーは、あなたが "犯罪"を行うときには現れませんが、その後はかなりの時間がかかります。 – selalerer

+0

私はしました||インサイド| sdl_initでは、それは間違っていました。助けていただきありがとうございます。 –