Singleton Singleton::GetSingleton() returns a new copy of Singleton created with the default constructor.
As you can see from the output the default constructor is never called. return *_instance; dereferences a garbage pointer null pointer, and since Singleton is an empty class (has no non-static variables) the destructor has nothing to do with it's implicit this pointer, therefore it doesn't crash, but if you add a member variable to Singleton, then the destructor will try to dereference the this pointer, which will fail, and the program will crash.
( I hope this is what happening :-) )
EDIT : just noticed the Singleton* Singleton::_instance = 0;// initialize pointer , so it dereferences a null pointer
As kbw said, it is using a copy of Singleton, but it uses the copy constructor (not the default constructor) to make the copy which is why you do not see the default constructor output.
...so you are never actually constructing a Singleton object.
I think that was the point of the OPs question, but GetSingleton() returns a Singleton via the auto generated copy constructor. A perfectly valid Singleton object can be constructed when GetSingleton() returns *_instance (even with _instance being NULL) because there is no member data to copy. If you add member data to the Singleton the copy constructor will fail because it has been asked to copy an object at the NULL address.