class Widget { public: Widget() { cout<<\"~Widget()\"<
You were trying to delete a NULL pointer. So, the destructor was not getting called.
class Widget { public: Widget() { cout<<"Widget()"<
Output:
operator new Widget() ~Widget() operator delete