Мы столкнулись с этой проблемой на стороне C ++ компилятора ObjC:
class A {
char *buf;
public:
A() { buf = new char[BUF_LENGTH]; }
virtual ~A() { delete [] buf; }
};
class B: public A {
public:
virtual ~B() {}
};
По какой-то причине A :: ~ A () не был вызван из B :: ~ B (), поэтому при проверке памяти, помеченной B :: ~ B (), произошла утечка памяти. Когда мы удалили пустой деструктор, код сработал.
Кто-нибудь знает, что происходит?