为什么我在这个函数中有一个分段错误,特别是在DisplayFormat函数的行中?我已经多次遇到过这个问题而且不知道如何修复它。
SDL_Surface* imageBlitingFunctions::loadIMG(std::string filename)
{
SDL_Surface *img = IMG_Load(filename.c_str());
SDL_Surface *imgOPT = SDL_DisplayFormat(img);
SDL_FreeSurface(img);
return imgOPT;
}
答案 0 :(得分:1)
按如下方式更改您的代码
SDL_Surface* imageBlitingFunctions::loadIMG(std::string filename)
{
SDL_Surface *img = IMG_Load(filename.c_str());
if(img == NULL) {
std::cerr << "ERROR: image load failed: " << SDL_GetError() << std::endl;
return NULL;
}
SDL_Surface *imgOPT = SDL_DisplayFormat(img);
SDL_FreeSurface(img);
return imgOPT;
}
克服分段错误,并获取IMG_Load()
实际出错的一些信息。
在使用之前,请不要忘记检查函数外的返回值NULL
。