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

Check if surface has been freed before SDL_FreeSurface

本文关键字:是否 表面 释放 检查表 检查 SDL FreeSurface      更新时间:2023-10-16

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

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

我该怎么做呢?

您编写了一个封装了SDL_Surface指针的类,该指针在其析构函数中释放surface。此外,请确保正确实现或禁用复制构造函数和赋值操作符。(见规则3)然后,你再也不能直接使用SDL_Surface指针了。

这是一个关于SDL的包装器的例子,这是我之前在做的。

当我了解SFML后,我停止了工作。