解决方案
看第15行至Surface.cpp的18:
surface = SDL_DisplayFormatAlpha( tempSurface );
surface = tempSurface;
}
SDL_FreeSurface( tempSurface );
我假定它出现segfaults因为当你在以后使用该表面时,实际上是在tempSurface操作,因为这条线的:
surface = tempSurface;
和不通过SDL_DisplayFormatAlpha返回的表面()。既然你免费tempSurface,面现在指向无效的内存。要修正,只要将第二行中的其他块。
其他提示
我没有安装SDL我的机器上,而是通过代码照看。
我在Output.cpp文件注意到这个:
display = new Surface();
您什么都不做。这个构造函数是空的。 (表面没有被初始化)。
然后,在输出:: initalize()这样做:
display->surface = SDL_SetVideoMode( 800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF );
这看起来像问题表面::表面从来没有真正初始化。如果你还没有找到解决办法,当我回家我会Digg的内容。
据我了解,分段错误发生在你试图mnaipulate一个ponter它不再可用,或者你正在试图改变一个恒定的值。
不隶属于 StackOverflow