TTF的SDL内存泄漏
SDL memory leak with TTF
我尝试使用SDL和TTF创建一个基本的文本绘图类但是我的内存大泄漏了。。即使我释放了表面:/
这是textloader.cpp
void TextLoader::drawStringWithShadow(string str,SDL_Rect rct,SDL_Color clr,SDL_Surface *screen)
{
SDL_Color black = {0,0,0};
text = TTF_RenderText_Solid(font,str.c_str(),black);
rct.x++;
rct.y++;
SDL_BlitSurface(text,NULL,screen,&rct);
rct.x--;
rct.y--;
text = TTF_RenderText_Solid(font,str.c_str(),clr);
SDL_BlitSurface(text,NULL,screen,&rct);
SDL_FreeSurface(text);
}
和文本加载器.h
#pragma once
#include"includes.h"
class TextLoader
{
public:
TextLoader(const char *Font,int Size);
~TextLoader(void);
void drawString(string str,SDL_Rect rct,SDL_Color clr,SDL_Surface *screen);
void drawStringWithShadow(string str,SDL_Rect rct,SDL_Color clr,SDL_Surface *screen);
private:
SDL_Surface *text;
TTF_Font *font;
};
我从我的主循环调用这个
您调用了TTF_RenderText_Solid()
两次,但只释放了用它创建的曲面text
一次。第二次通话:
text = TTF_RenderText_Solid(font,str.c_str(),clr);
覆盖指向上一个曲面的指针,从而导致内存泄漏。对第二个曲面执行SDL_FreeSurface()
,但不对第一个曲面执行。
注意:TTF_RenderText_Solid返回指向全新曲面的指针。
相关文章:
- C++功能泄漏内存,我是C++新手,不确定如何解决
- 我的堆栈弹出式磁带的实现是否泄漏内存?
- 将 c++ 向量转换为字符 ** 而不会泄漏内存
- 析构函数 C++ 使泄漏内存
- 构造函数对象赋值是否泄漏内存
- corba :: orb_init泄漏内存
- Gmock泄漏内存
- 如何在不泄漏内存的情况下删除链接列表
- Visual C ODBC关闭记录集泄漏内存
- 为什么泄漏内存比在动态数组上执行 delete[] 慢
- OpenGL正在泄漏内存.哪个对象未释放
- 可以std ::退出泄漏内存
- uiautomation findall泄漏内存
- 为什么在此OpenCL代码中泄漏内存,为什么要泄漏内存
- pthread在完成后会泄漏内存
- win32 标准::线程泄漏内存
- 返回指向同一变量的指针是否会泄漏内存
- 使用clectType(new any_type())可能会泄漏内存泄漏
- Windows开发:如何确定我的应用程序是否正在泄漏内存
- WinHttp打开泄漏内存