DrawText内存泄露

梁诚斌 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上面的定时器的处理函数,请问有没有童鞋碰到过相同的问题
...全文
166 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
梁诚斌 2013-11-03
  • 打赏
  • 举报
回复
DEBUG下最小化好像也一样,内存在往上跳
梁诚斌 2013-11-03
  • 打赏
  • 举报
回复
昨天查到点眉目,发现在release模式下没有泄露的问题,只有在debug下才发生的(哪怕只是在定时器里面写最简单GetDC, SelectObject, DrawText, SelectObject, ReleaseDC). 暂时可以解决问题了
宝龙哥 2013-11-03
  • 打赏
  • 举报
回复
DrawText也会内存泄露?持续运行一段时间看什么情况
  • 打赏
  • 举报
回复
内存增长不一定代表泄露,你把它最小化一会,再恢复看看,
梁诚斌 2013-11-02
  • 打赏
  • 举报
回复
刚才发现一个更奇葩的事情,这段代码在XP下没有问题,WIN7下才发生内存泄露,真是奇怪了
梁诚斌 2013-11-02
  • 打赏
  • 举报
回复
补充一下,上面这段代码也会发生泄露,每个定时间隔4K,由于间隔很短,内存就漏的很快

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧