Я реализовал одноэлементный шаблон. Вот, я создаю новый экземпляр 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;
}