webbrowser 内存泄漏问题

gykgod 2011-09-09 02:37:52

我在一个程序中起多个线程,每个线程中使用一个webbrowser控件,在线程退出以后发现gdi对象没有减少,以后再创建线程gdi对象又增加,死活不减少,进程占用的内存也在不停得飙升,不知道是为啥,请大牛帮忙看看。


谢谢
...全文
370 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
gykgod 2011-09-13
  • 打赏
  • 举报
回复
To avoid a memory leak:

Always forward the IDocHostUIHandler::ShowUI and IDocHostUIHandler::HideUI methods to the original handler.
Release the pointer to the original UI handler when your object is called with IObjectWithSite::SetSite(NULL).
masterz 2011-09-09
  • 打赏
  • 举报
回复
办法1:用memory leakage detection 工具,比如Intel Parallel Studio 2011
办法2:看看能否把多线程结果改为多进程结构,比如chrome就是多个进程间通信。重启动进程就不要考虑不太严重的内存泄漏。
gykgod 2011-09-09
  • 打赏
  • 举报
回复
怎么办哪 怎么办???
辰岡墨竹 2011-09-09
  • 打赏
  • 举报
回复
而且同一个对象,你增加了多少引用计数,就得调用多少次Release,只有计数变成0,才会被释放。
辰岡墨竹 2011-09-09
  • 打赏
  • 举报
回复
你的COM组件Release了么?记得每次QueryInterface或AddRef之后都会增加一个引用计数,不用时必须Release掉。
至善者善之敌 2011-09-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 gykgod 的回复:]
引用 7 楼 babilife 的回复:
引用 3 楼 gykgod 的回复:
引用 1 楼 babilife 的回复:
一直在用,没见泄露


能不能告诉一下怎么销毁webbrowser控件,才能回收内存,我用了stop和quit,都不起作用啊

看这帖子

http://topic.csdn.net/u/20080825/19/4fdd1810-cc76-45af-9aa6……
[/Quote]
貌似只有关闭程序了才不泄露,我只在主线程里用过
gykgod 2011-09-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 babilife 的回复:]
引用 3 楼 gykgod 的回复:
引用 1 楼 babilife 的回复:
一直在用,没见泄露


能不能告诉一下怎么销毁webbrowser控件,才能回收内存,我用了stop和quit,都不起作用啊

看这帖子

http://topic.csdn.net/u/20080825/19/4fdd1810-cc76-45af-9aa6-e2eda5fa5ad5.html?451……
[/Quote]
蒋晟的办法 不能解决我的问题 我是多线程多个webbrowser 怎么在线程退出时候释放?
qq120848369 2011-09-09
  • 打赏
  • 举报
回复
频繁的申请与释放也是一个悲剧,虽然不懂,但我建议回收的时候放到对象池里。
至善者善之敌 2011-09-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gykgod 的回复:]
引用 1 楼 babilife 的回复:
一直在用,没见泄露


能不能告诉一下怎么销毁webbrowser控件,才能回收内存,我用了stop和quit,都不起作用啊
[/Quote]
看这帖子

http://topic.csdn.net/u/20080825/19/4fdd1810-cc76-45af-9aa6-e2eda5fa5ad5.html?45123394
cbib_cat 2011-09-09
  • 打赏
  • 举报
回复
没有用过,帮楼主顶一下!
gykgod 2011-09-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qq149850508 的回复:]
你创建的线程并没有退出
[/Quote]

窗口destory了,线程也保证已经退出了
独自听枫 2011-09-09
  • 打赏
  • 举报
回复
难道传说中的VS木有警告,还是说脱离了VS的管辖...
gykgod 2011-09-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 babilife 的回复:]
一直在用,没见泄露
[/Quote]

能不能告诉一下怎么销毁webbrowser控件,才能回收内存,我用了stop和quit,都不起作用啊
qq149850508 2011-09-09
  • 打赏
  • 举报
回复
你创建的线程并没有退出
至善者善之敌 2011-09-09
  • 打赏
  • 举报
回复
一直在用,没见泄露

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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