C ++ SDL项目中的分段错误

时间:2014-06-29 21:59:23

标签: c++ function segmentation-fault sdl

为什么我在这个函数中有一个分段错误,特别是在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;
}

1 个答案:

答案 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