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];
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.