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

liumeiqinyang 2008-12-18 09:02:27
那帖我不能再加分了,重开帖。
...全文
70 点赞 收藏 8
写回复
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就行了。
回复
发动态
发帖子
ATL
创建于2007-09-28

3206

社区成员

ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
申请成为版主
社区公告
暂无公告