Why is my destructor never called?

c++, memory-leaks

Solution

Your base class needs a virtual destructor. Otherwise the destructor of the derived class will not be called, if only a pointer of type A* is used.

Add

virtual ~A() {};

to class A.

Problem

I have a base class A and a derived class B: ``` class A { public: virtual f(); }; class B : public A { public: B() { p = new char [100]; } ~B() { delete [] p; } f(); private: char *p; }; ``` For any reason the destructor is never called - why? I dont understand this.

Original source