When I look for informations about the singleton pattern for C++, I always find examples like this:
class Singleton
{
    public:
        ~Singleton() {
        }
        static Singleton* getInstance()
        {
            if(instance == NULL) {
                instance = new Singleton();
            }
            return instance;
        }
    protected:
        Singleton() {
        }
    private:
        static Singleton* instance;
};
Singleton* Singleton::instance = NULL;
But this kind of singleton also seems to work as well:
class Singleton
{
    public:
        ~Singleton() {
        }
        static Singleton* getInstance()
        {
            return &instance;
        }
    protected:
        Singleton() {
        }
    private:
        static Singleton instance;
};
Singleton Singleton::instance;
I guess that the second singleton is instantiated at the beginning of the program, unlike the first, but is it the only difference?
Why do we find mainly the first?
 
     
     
     
     
    