A: perhaps not.
Unless you utilized placement new, you must simply delete the object instead of explicitly calling the destructor. For instance, suppose you allocated the object through a typical new expression:
Fred* p = new Fred();
Then the destructor Fred::~Fred() will auto magically get called while you delete it via:
delete p; // Automagically calls p->~Fred()
You must not explicitly call the destructor, as doing so won''t release the memory which was allocated for the Fred object itself. Remember: delete p does two things: first it calls the destructor and second it deallocates the memory.