1

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

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

还是这会导致内存泄漏?

4

1 回答 1

3

编辑:根据我对文档的理解,这将导致泄漏。看到您基本上调用了该函数 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

于 2016-03-09T17:07:53.423 回答