我认为问题很简单,但我在释放曲面时遇到了问题,因为即使我在代码中添加了SDL_FreeSurface(),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();