Как удалить указатель Singleton?

Я реализовал шаблон синглтона. Здесь я создаю новый экземпляр синглтона * в GetInstance, когда я пытаюсь удалить его в деструкторе, это происходит в бесконечном цикле. Как избежать утечки памяти в этом случае?

См. Следующий фрагмент кода:

#define NULL 0
class Singleton  
{ 
    private :  
        static Singleton* m_pInstance;  
        Singleton(){};  

    public :

    static Singleton* GetInstance()
    {
        if(m_pInstance == NULL)
        {
            m_pInstance  = new Singleton();         
        }
        return m_pInstance;
    }

    ~Singleton()
    { 
        //delete m_pInstance; // The system goes in infinate loop here if i uncomment this  
        m_pInstance = NULL;
    }
};

Singleton*  Singleton ::m_pInstance = NULL;   

int main()  
{
    Singleton* pInstance = Singleton::GetInstance();
    delete pInstance;  
}     
26
задан Shadow The Princess Wizard 2 January 2012 в 10:03
поделиться