请教一个关于COM对象内存释放的问题

一饭一粥 2010-10-26 03:18:26
各位大虾好:
使用COM对象完毕后, 使用Release()方法后, 内存没有释放, 如果在一个循环内使用会令到内存疯长.
例如.
CoInitialize();
while(true)
{
IPtr wd(__uuidof(wo));
//todo
wd->Release();
}
CoUninitailize();

但是如果Relese后用wd = NULL;倒是可以防止内存大量增长.

另外请问,COM对象可以应用程序中可以做成全局变量吗.
...全文
77 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rendao0563 2010-10-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 wengshaoheng 的回复:]
各位大虾好:
使用COM对象完毕后, 使用Release()方法后, 内存没有释放, 如果在一个循环内使用会令到内存疯长.
例如.
CoInitialize();
while(true)
{
IPtr wd(__uuidof(wo));
//todo
wd->Release();
}
CoUninitailize();

但是如果Rel……
[/Quote]

COM有自己的延迟释放机制. 用于提高效率. 尽量不要使用全局类的东西.
ouyh12345 2010-10-26
  • 打赏
  • 举报
回复
wd.Release();呢?
Jim_King_2000 2010-10-26
  • 打赏
  • 举报
回复
推荐你用智能指针,这样就无需手动Release COM对象了。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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