CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  ATL/ActiveX/COM

请问如何管理和删除COM中创建的对象?

楼主bakerking(程序面包)2003-12-04 16:51:39 在 VC/MFC / ATL/ActiveX/COM 提问

我编写了几个自己的类,为了能够在其它语言中使用这些类,就用COM做了封装,比如:  
   
  用IMyObj封装了CMyObj,可以在Delphi/VB中使用COM来生成类对象,  
   
  关于COM对象的释放,由于系统有addref/removelref机制,我不担心这些对象本身的释放与删除。  
   
  但是由于我不知道如何去捕获COM被删除/撤销的事件,COM中创建的对象和申请的内存不知道如何去释放!  
   
  有遇到类似问题的么?给点建议,多谢! 问题点数:100、回复次数:6Top

1 楼xiaohyy(醉大饿极)回复于 2003-12-04 18:48:12 得分 5

调用Release后看是否返回0。。如果返回0则该com对象表示释放了Top

2 楼newkey007(无限天空 www.xDrv.com)回复于 2003-12-04 22:10:02 得分 1

COM   的生命周期不是要你来管理的  
   
  申请的内存   CoTaskAllocMemory  
  Top

3 楼newkey007(无限天空 www.xDrv.com)回复于 2003-12-04 22:12:57 得分 88

当   引用计数   =0   的时候  
   
  他会执行   FinalRelease()  
  你可以在这里处理  
   
  当对于COM中涉及到了交叉引用,   要麻烦些   ,   得自己写个函数Top

4 楼joachern(程序人生)回复于 2003-12-05 08:47:30 得分 5

就是!Top

5 楼xiaohedou(小河豆(充电中.18%.))回复于 2003-12-05 15:21:14 得分 1

在COM内部开的内存当然要由COM自己来管理!这个与你在什么环境里调用无关。至于“如何去捕获COM被删除/撤销的事件”:如果程序是你写的,用SEP来管理。tyr/catch/throw的组合。  
  search   MSDN|Structured   Exception   Handling!Top

6 楼bakerking(程序面包)回复于 2003-12-05 22:23:59 得分 0

多谢大家,我需要的就是   newkey007(无限天空)   老兄提供的方法  
   
  在COM对象的   finalrelease   中我设置了如下代码:  
  if(m_ptr!=NULL)   delete   m_ptr;  
   
  问题解决了!  
  多谢多谢!Top

相关问题

  • 删除对象求扫盲?
  • 关于对象的删除
  • 关于对象得删除?
  • 创建ADO对象
  • 创建的区域HRGN 怎样删除?
  • 如何删除ClassWizard创建的类
  • 区域创建后需要删除吗?
  • 如何动创建、态删除控件?
  • 删除动态创建的控件
  • 动态创建的控件的删除

关键词

  • 管理
  • 内存
  • com
  • 删除
  • 对象
  • 多谢
  • 释放

得分解答快速导航

  • 帖主:bakerking
  • xiaohyy
  • newkey007
  • newkey007
  • joachern
  • xiaohedou

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo