簡體   English   中英

正確釋放SDL_Surface?

[英]freeing an SDL_Surface correctly?

我可以通過這樣做來釋放我的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM