CreateInstance(&pEvent)创建的实例需要client端手动释放吗?

liumeiqinyang 2008-12-18 09:02:27
那帖我不能再加分了,重开帖。
...全文
117 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jameshooo 2008-12-18
  • 打赏
  • 举报
回复
最好缓存,要不然你调用unadvise时从哪得到参数?
liumeiqinyang 2008-12-18
  • 打赏
  • 举报
回复
系统说发贴一天之后才能加分,我先把这帖结了,重开贴或者以后再请教胡兄时把分补上吧。
太不好意思了丷丷
liumeiqinyang 2008-12-18
  • 打赏
  • 举报
回复
太对不起胡兄了,那个贴结错了,这个贴结时我再加到200分吧
liumeiqinyang 2008-12-18
  • 打赏
  • 举报
回复
IDispatch* pEvent = NULL;
MyInspectorEvent::CreateInstance(&pEvent);
MyInspectorEvent* p = (CMyInspectorEvent*)pEvent;
hr = p->DispEventAdvise((IDispatch*)spInspector);
pEvent->Release(); //这里就可以release了吧?
在DispEventUnadvise时,我是由activeInspector来得到当前的inspector对象指针作为参数的,是否可以?还是非要保持这个IDispatch* pEvent?
jameshooo 2008-12-18
  • 打赏
  • 举报
回复
我明白1楼的意思,其实是统一的,1楼是说不能直接delete,而是要通过Release来间接释放。
ivan_08 2008-12-18
  • 打赏
  • 举报
回复
楼上2个意见不统一啊,mark
jameshooo 2008-12-18
  • 打赏
  • 举报
回复
当然需要释放,按照ATL模板创建的组件内部都在维护引用计数,所以CreateInstance产生的对象也一样需要调用Release。
你创建出来的IDispatch*可以缓存起来,在调用了unadvise之后就可以Release了。
UDX协议 2008-12-18
  • 打赏
  • 举报
回复
不需要,只需要按com规范release就行了。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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