Эй, ребята, я написал быстрый тест. Я хочу удалить, чтобы вызвать deleteMe, который затем удалит себя. Цель этого состоит в том, чтобы я мог обычно удалять obj, которые выделяются библиотекой lib. (Я не хочу никаких сбоев из-за КРТ или ж / д).
При удалении этого я получаю переполнение стека, без него msvc говорит, что я пропустил 4 байта. Когда я не вызываю test, я теряю 0. Как удалить без рекурсии проблему?
-редактировать-
чтобы сделать это более понятным. Я хочу, чтобы LIB вызывал delete (то есть deleteMe) вместо программы из-за crt
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;
}