CComPtr 和 CComQIPtr 是 Active Template Library (ATL) 中提供的智能指针类,它们用于管理 COM 接口指针的生命周期。COM(Component Object Model)是微软提供的一种用于创建二进制软件组件的规范,这些组件可以在不同的应用程序和操作系统之间互操作。
很多老系统会使用COM组件,并建立ATL库工程,这个时候用的智能指针就是CComPtr和CComQIPtr,千万不要再说自己没接触过智能指针了,虽然不是流行的shared_ptr之类的智能指针。
CComPtr
CComPtr 是一个模板类,它封装了一个指向 COM 接口的指针,并提供了自动引用计数(Reference Counting)和接口指针释放的功能。这确保了当 CComPtr 对象离开其作用域或被重置时,它所持有的 COM 接口指针会被正确地释放。
使用 CComPtr 的好处包括:
- 自动管理引用计数:当你通过 CComPtr 调用一个 COM 对象的 AddRef 方法时,CComPtr 会自动跟踪引用计数。当 CComPtr 对象被销毁或重置时,它会调用 Release 方法来减少引用计数,并在引用计数为零时释放 COM 对象。
- 减少内存泄漏:由于 CComPtr 自动管理 COM 接口指针的生命周期,因此可