DrawText内存泄露

liangcb 商泰汽车软件有限公司 开发测试工程师  2013-11-02 03:05:30
今天在用BCB6写一个滚动字幕的时候,在定时器中使用API的::DrawText,
结果运行的时候察看进程管理器,发现内存按照定时器的间隔定时泄露4K的内存,
我将定时器中的DrawText函数写成最简单的一段代码
void __fastcall TForm1::tmr1Timer(TObject *Sender)
{
HDC dcPaint = ::GetDC(this->Handle);
if(::GetClientRect(this->Handle, &recShowBottomText))
{
HFONT hfontold = SelectObject(dcPaint, hBottomText);
::DrawTextA(dcPaint, "1", 1, &recShowBottomText, DT_LEFT|DT_VCENTER|DT_SINGLELINE);
SelectObject(dcPaint, hfontold);
}
::ReleaseDC(this->Handle, dcPaint);
}
这段代码是一个FORM上面的定时器的处理函数,请问有没有童鞋碰到过相同的问题
...全文
104 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangcb 2013-11-03
DEBUG下最小化好像也一样,内存在往上跳
回复
liangcb 2013-11-03
昨天查到点眉目,发现在release模式下没有泄露的问题,只有在debug下才发生的(哪怕只是在定时器里面写最简单GetDC, SelectObject, DrawText, SelectObject, ReleaseDC). 暂时可以解决问题了
回复
宝龙哥 2013-11-03
DrawText也会内存泄露?持续运行一段时间看什么情况
回复
内存增长不一定代表泄露,你把它最小化一会,再恢复看看,
回复
liangcb 2013-11-02
刚才发现一个更奇葩的事情,这段代码在XP下没有问题,WIN7下才发生内存泄露,真是奇怪了
回复
liangcb 2013-11-02
补充一下,上面这段代码也会发生泄露,每个定时间隔4K,由于间隔很短,内存就漏的很快
回复
发动态
发帖子
Windows SDK/API
创建于2007-08-02

1202

社区成员

C++ Builder Windows SDK/API
申请成为版主
社区公告
暂无公告