我目前正在学习COM,下面的代码让我困惑.
STDMETHODIMP _(ULONG) ComCar::Release()
{
if(--m_refCount==0)
delete this; // how could this "suicide" deletion be possible?
return m_refCount;
}
Run Code Online (Sandbox Code Playgroud)
我想知道如何在其成员方法中删除对象实例?所以我做了以下实验:
class A
{
public:
void Suicide(void);
void Echo(void);
char name;
};
void A::Echo(void)
{
::printf("echo = %c\n",name);
}
void A::Suicide(void)
{
delete this;
}
int main(void)
{
A a;
a.name='a';
a.Suicide(); //failed
}
Run Code Online (Sandbox Code Playgroud)
并且执行确实在a.Suicide()失败了.调试报告一些"Debug Assertion Failed".有人会对我有所了解吗?因为我完全是COM的新手.
相关的主题在这里:关于COM Release()方法的问题