嘿伙计们,我写了一个快速测试。我想 delete 调用 deleteMe 然后删除自己。这样做的目的是让我可以正常删除由 lib 分配的 obj。(我不希望由于 crt 或 w/e 导致任何崩溃)。
删除这个我得到一个stackoverflow,没有它msvc说我泄露了4个字节。当我不调用测试时,我泄漏 0。我如何删除 w/oa 递归问题?-edit- 使这一点更清楚。由于crt,我希望LIB调用delete(因此deleteMe)而不是程序
class B
{
public:
virtual void deleteMe()=0;
static void operator delete (void* p) { ((B*)p)->deleteMe(); }
};
class D : public B
{
public:
void deleteMe() {
delete this;
}
};
int test()
{
B *p = new D;
delete p;
return 0;
}