У меня есть фрагмент кода, подобный следующему:
class Base {
public:
Base(){}
Base(int in);
virtual ~Base() { delete b_; }
private:
Base *b_;
int in_;
};
class Derived : public Base {
public:
Derived(){}
~Derived() {}
};
Base::Base(int i) : in_(in){
b_ = new Derived();
}
int main() {
Base *b = new Base(1);
delete b;
return 0;
}
Я получил ошибку сегментации при удалении b_ внутри Base, и я предполагаю, что причина в том, что это приведет к бесконечным рекурсивным вызовам ~База().Я также попытался вызвать ~ Derived () в main (), а затем удалить b, но все еще есть утечка памяти, поскольку b_ не освобождается.
Так что мой вопрос в том, как правильно освободить всю память, если у меня есть такой код.Я искал решение в течение нескольких часов без каких-либо удовлетворительных результатов.Так что любые предложения помогут, спасибо.