> 情感
使用对象错误(怎样用对象初始化成员变量)
导语:代码片段:使用对象来自动初始化(销毁)COM设施
考察以下代码片段
代码解析
在以上代码中,我们使用了对象的构造析构机制对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智能指针来管理其生命周期。
免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请反馈,一经查实立刻删除内容。本文内容由快快网络小娴创作整理编辑!