关于智能指针spTest
spTest.Release()和spTest.p->Release()的区别是什么。从CComPtr的源码看:
void Release()
{
IUnknown* pTemp = p;
if (pTemp)
{
p = NULL;
pTemp->Release();
}
}
感觉差别就在spTest.p->Release()没有最后 = NULL的赋值操作而已。
spTest.Release()和spTest.p->Release()的区别是什么。从CComPtr的源码看:
void Release()
{
IUnknown* pTemp = p;
if (pTemp)
{
p = NULL;
pTemp->Release();
}
}
感觉差别就在spTest.p->Release()没有最后 = NULL的赋值操作而已。
spTest.Release() 的形式spTest.p->Release() 没有最后 = NULL的赋值操作,
但在spTest析构的时候,因spTest.p不为 NULL, 会试图再一次释放内部的com指针,很容易引起程序崩溃