各位大侠帮帮忙,看看下面的程序在哪一个位置产生内存泄漏

litqqs 2003-12-14 04:26:12
void function(CppWebBrowser * WebBrowser)
{
IHTMLDocument2 *pOddsDoc;
IHTMLElement *pBody;
IDispatch *pDispatch;
pDispatch = WebBrowser->Document;
if(pDispatch)
{
wchar_t *txtOut;
if(SUCCEEDED(pDispatch->QueryInterface(IID_IHTMLDocument2,(void **)&pOddsDoc)))
{
if(SUCCEEDED(pOddsDoc->get_body(&pBody)))
{
pBody->get_outerText(&txtOut);
pBody->Release();
pBody = NULL;
AnsiString pt = AnsiString(txtOut);
//do with some function(pt)
}
pOddsDoc->Release();
pOddsDoc = NULL;
}
pDispatch->Release();
pDispatch = NULL;
}
}

...全文
67 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
书生 2003-12-18
  • 打赏
  • 举报
回复
不过没关系。你把程序最小化一次,然后再看看进程管理器。
靠都放掉了。
=======================

hehe,那你动态执行一次这样的操作呢?是不是也释放掉了?
litqqs 2003-12-18
  • 打赏
  • 举报
回复
还是自己来搞清楚了,不是QueryInterface在Release()时没有释放内存,而是get_outerText(&txtOut);后的内存没有释放出来。
litqqs 2003-12-16
  • 打赏
  • 举报
回复
自己来UP
goldpony 2003-12-15
  • 打赏
  • 举报
回复
up
pp616 2003-12-15
  • 打赏
  • 举报
回复
哎。使用这些com口很郁闷!!!!
IHTML...这些COM口。用Release释放在Window进程管理器中看内存是只增不减。
只要QueryInterface就要申请内存。Release也放不掉。
不知道是不是windows这类接口有bug还是怎么回事。
不过没关系。你把程序最小化一次,然后再看看进程管理器。
靠都放掉了。

这是我原来写一个web监视程序的一点体验。

constantine 2003-12-14
  • 打赏
  • 举报
回复
ding

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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