从示例中我看到COM IUnknown::Release()函数实现是这样的:
ULONG Release()
{
InterlockedDecrement(&m_count);
if(m_count == 0) {
delete this;
}
return m_count;
}
Run Code Online (Sandbox Code Playgroud)
因此,如果m_count为0,那么我们将删除"this"对象,并返回引用计数.我不明白为什么它有效?!?!
删除对象不会破坏调用堆栈,也可以,因为它是由线程保存的,所以它与对象无关???
如果对象已被删除,我们怎么可能返回m_count,它应该被删除.我可以说服自己,如果在删除代码后会返回硬编码0,这是可以的,但是为什么它会返回会员?!?!
非常感谢你的帮助!:-)