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