C++ 正确释放SDL_曲面?

C++ 正确释放SDL_曲面?,c++,memory-leaks,sdl,sdl-2,sdl-ttf,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; SDL_表面*surf; 对于(int i=0;i

我可以通过以下操作释放SDL_Surface*冲浪:

    SDL_Surface* surf;
    for(int i = 0; i < 5; i++){
         surf = TTF_RenderText_Blended(foofont, foostring, foocolor);
    }
    SDL_FreeSurface(surf);
    surf = NULL;
SDL_表面*surf;
对于(int i=0;i<5;i++){
surf=TTF_RenderText_混合(foofont、foostring、foocolor);
}
SDL_自由曲面(surf);
surf=NULL;

还是这会导致内存泄漏?

编辑:根据我对文档的理解,这会导致内存泄漏。 因为您基本上要调用函数5次,每次都会创建一个新曲面。即,每次都需要释放所有曲面。 所以

for(int i=0;i<5;i++)
{
surf=TTF_RenderText_混合(foofont、foostring、foocolor);
SDL_曲面(surf)
}
surf=NULL;
您可以在此处阅读文档:


您可以看到,这正是文档所建议的。@BoBTFish否定,文档明确释放了每个(唯一一个)曲面。因此它不会生成3个新曲面,只释放一个曲面?是的,对不起。我想那会导致泄漏是的,触发有点快。我们现在已经编辑了回复。
for(int i = 0; i < 5; i++)
{
    surf = TTF_RenderText_Blended(foofont, foostring, foocolor);
    SDL_FreSurface(surf)
}
surf = NULL;