一个_com_ptr_t模板创建的智能指针(通过调用CreateInstance)
1.是不是不需要考虑调用Release方法?
2.如果不调用Release会不会内存泄漏?
3.如果赋值为NULL(ptr = NULL)是不是意味着调用Release?
1.是不是不需要考虑调用Release方法?
2.如果不调用Release会不会内存泄漏?
3.如果赋值为NULL(ptr = NULL)是不是意味着调用Release?
只有在计数为0时才释放内存
创建的对象要求调用release,
如果赋值为NULL(ptr = NULL)不意味着调用Release
如果利用其智能指针就可以不调用release
不用release 超出作用域会自动释放
gz
例如:
CMyClass::CMyClass()
{
m_ptrXmlDomDocument.CreateInstance( CLSID_DOMDocument );
}CMyClass::~CMyClass()
{
if( m_ptrXmlDomDocument != NULL )
m_ptrXmlDomDocument = NULL; // 我在这里进行调试进入,发现有调用Release
}
// 其中m_ptrXmlDomDocument是 MSXML2::IXMLDOMDocumentPtr类型的
// 而MSXML2::IXMLDOMDocumentPtr定义为:
// _com_ptr_t< _com_IIID< MSXML2::IXMLDOMDocument, 0 > >
那么如果我的这个对象实例化多个,那么ptr = NULL会不会释放所有的引用计数?