在同一表面上加载图像是否可以释放旧图像?

时间:2016-09-25 00:34:27

标签: c++ visual-c++ sdl

我是SDL的新手,在我的程序的这一部分中,我希望能够更改现有曲面的图像。我的问题是,这会自动卸载上一个图像还是我必须使用SDL_FreeSurface()然后重新加载表面?我不想最终加载大量不需要加载的图片。视觉解释:

string path = "Image.png";
SDL_Surface* loadedSurface = IMG_Load((path.c_str());

如果我再次使用loadedSurface使用不同的图像,是否会卸载原始图像?

path = "NewImage.png";
loadedSurface = IMG_Load(path.c_str());

或者每次加载新图像时我都必须这样做:

SDL_FreeSurface(loadedSurface);
path = "NewImage.png";
SDL_Surface* loadedSurface = IMG_Load(path.c_str());

这可能没问题,我只是不确定每个循环创建一个新表面是否会比另一个更简单,更容易。谢谢!

1 个答案:

答案 0 :(得分:1)

在加载新曲面并覆盖旧指针之前,您需要调用SDL_FreeSurface

考虑一下:第二次调用IMG_Load时,SDL只是加载图像,并且不知道你要对返回的指针做什么。因此它无法释放任何已经加载的曲面。你必须自己做。