检查表面是否已在SDL_FreeSurface之前释放

时间:2011-10-21 13:56:20

标签: c++ memory-management pointers sdl

使用SDL_Surface来处理图像时,我遇到了在同一指针上运行SDL_FreeSurface(SDL_Surface *)doc)两次产生分段错误的问题。

我理解为什么会这样,但我需要知道如何避免这种情况。我想检查指针的状态(找出它是否指向现有表面),然后仅在必要时释放表面。

我该怎么做?

1 个答案:

答案 0 :(得分:4)

您编写了一个封装SDL_Surface指针的类,该指针释放了析构函数中的表面。此外,请确保正确实现或禁用复制构造函数和赋值运算符。 (参见The rule of 3)然后,你再也不用直接使用SDL_Surface指针了。

Here's an example of a wrapper around SDL that I was working on a while ago.

一旦我了解了SFML,我就停止了工作。