gpt4 book ai didi

c++ - SDL_FreeSurface无法释放RAM/RAM溢出

转载 作者:行者123 更新时间:2023-12-01 14:47:34 24 4
gpt4 key购买 nike

我认为这是一个简单的问题,但是我在释放表面时遇到问题,即使将SDL_FreeSurface()添加到代码中,cuz RAM也会溢出。没有此功能,RAM可以使用。这段代码还有更多“免费”的功能吗?
此代码试图在屏幕顶部显示文本(乒乓球比赛的分数)。

    TTF_Init();
TTF_Font* arial = TTF_OpenFont("arial.ttf", 32);
SDL_Color msg_color = { 255,255,255 };

char msg[128];
sprintf_s(msg, "%d %d", g_SCORE_P_LEFT, g_SCORE_P_RIGHT);

SDL_Surface* messageSurface = TTF_RenderText_Solid(arial, msg, msg_color);
SDL_Texture* Message = SDL_CreateTextureFromSurface(m_game_window_renderer, messageSurface);

SDL_Rect msg_rect;
msg_rect.x = 50;
msg_rect.y = 50;
msg_rect.w = 30;
msg_rect.h = 30;

SDL_RenderCopy(m_game_window_renderer, Message, NULL, &msg_rect);
SDL_FreeSurface(messageSurface);
TTF_Quit();

最佳答案

您正在释放表面,但没有释放基于该表面创建的纹理。将此行添加到末尾:

SDL_DestroyTexture(Message);

您还需要关闭字体:
TTF_CloseFont(arial);

关闭SDL_TTF也是一个好习惯。在SDL_Quit()之前添加此行;
TTF_Quit();

关于c++ - SDL_FreeSurface无法释放RAM/RAM溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62434772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com