代码片段:使用对象来自动初始化(销毁)COM设施

论坛 期权论坛 期权     
漫漫开发路   2019-7-13 06:29   1120   0
考察以下代码片段


代码解析在以上代码中,我们使用了对象的构造析构机制对COM进行初始化和销毁的动作,即使业务代码出现异常导致过早退出,对象的析构机制也能确保COM设施及时的销毁。



HRESULT操作符另外,我们实现了一个HRESULT的操作符,这样,我们就可以通过这个操作符来判断COM初始化是否成功完成。



和COM智能指针结合和COM对象打交道,如果忘记成对的调用AddRef和Release方法,则1)COM对象内存泄漏, 2)COM对象重复删除导致的内存违规。
所以,我们通常会使用CComPtr这个智能指针来封装对COM对象的生命周期的操作。


总结1) 如果两个函数需要确保成对调用,例如CoInitializeEx/CoUninitialize,new/delete,GetDC/ReleaseDC等,考虑使用对象的构造和析构机制进行调用封装。
2) 涉及COM接口对象时,尽可能的使用CComPtr智能指针来管理其生命周期。
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP