title: How to delete Singleton pointer?
body: <p>I was implementing a singleton pattern.Here,I am creating a new instance of Singleton* in GetInstance, when I try and delete it in the destructor,  it does in infinite loop. How to avoid memory leak in this case ?   </p>
  
  <p>Please refer the below piece of code:</p>
  
  <pre><code>#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;  
  }     
  </code></pre>