will invoke the destructor, which in turn will try to delete _instance once more, infinitely. That said, don't ignore the fact that Instance() allocates an object on the free-store, and that that object must be deleted explicitly to avoid a memory leak. The simplest solution is to delete _instance at the end of the program:
This is however, a violation of basic OOD principles. Imagine what would happen if another thread calls Instance() one again. A better solution is to define another static member function that explicitly destroys the Singleton object and resets _instance: