c++ - 正确释放 SDL_Surface?

标签 c++ memory-leaks sdl sdl-2 sdl-ttf

我可以通过这样做来释放我的 SDL_Surface* 冲浪吗:

    SDL_Surface* surf;
    for(int i = 0; i < 5; i++){
         surf = TTF_RenderText_Blended(foofont, foostring, foocolor);
    }
    SDL_FreeSurface(surf);
    surf = NULL;

或者这会导致内存泄漏吗?

最佳答案

已编辑:根据我对文档的理解,这会导致泄漏。 看到你基本上调用函数 5 次,每次都创建一个新的表面。也就是说,您每次都需要释放所有表面。 所以

for(int i = 0; i < 5; i++)
{
    surf = TTF_RenderText_Blended(foofont, foostring, foocolor);
    SDL_FreSurface(surf)
}
surf = NULL;

您可以在此处阅读文档:

https://www.libsdl.org/projects/docs/SDL_ttf/SDL_ttf_44.html

https://wiki.libsdl.org/SDL_FreeSurface

关于c++ - 正确释放 SDL_Surface?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35897951/

相关文章:

c++ - 如何使用 recv() 在 C++ 套接字中接收超过 65000 个字节

Python C API : How to check if an object is an instance of a type

C++ 二维下标运算符

Javascript 闭包 - 如何防止内存泄漏

ios - Apple 的可达性内存泄漏

c++ - 如何将 wchar_t 值打印到控制台?

C++ 将数据插入链表时发生内存泄漏

c - 如何使用 memset 向像素数组添加颜色?

python - OS X El Capitan 上的 SDL_image 视觉故障

javascript - 找不到预加载的图像 (emscripten)