c++ - 检查表面是否在 SDL_FreeSurface 之前被释放

标签 c++ memory-management pointers sdl

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

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

我该怎么做?

最佳答案

您编写了一个封装 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 就停止了工作.

关于c++ - 检查表面是否在 SDL_FreeSurface 之前被释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7850422/

相关文章:

c++ - 使用指针到指针时出错

使用模板元编程的 C++ 数值解析器

c# - 我可以将 C DLL 的输出重定向到我的 c# log4net 输出吗

c++ - 如何引发C++异常

linux - 运行一个大小为 "Unlimited Stack"的应用会有什么影响?

c++ - Green Hills Integrity 动态内存分配

c++ - Qt中如何为parent声明child是共享指针

objective-c - 尽管故意过度释放,对象的保留计数永远不会低于 1

将结构指针转换为另一个嵌入结构

ios - 如何设置rootViewController指向一个指针的地址