If you have a base class which has methods that will be modified by derived classes, then those methods are normally declared as virtual methods. If that is the case, then make sure that the destructor is declared as a virtual method.
As an indie developer making a 3D game engine I would like to share with you my experiences. Developing a game engine is like dancing tango with the devil, and guess what? he will be the one leading.