我有一个单身课程。我正在创建它的一个对象。使用它。一旦超出范围,就会调用析构函数。
再次创建一个新对象,因为 instanceFlag 为 false,它将再次分配新内存。
#include <iostream>
using namespace std;
class Singleton
{
private:
static bool instanceFlag;
static Singleton *single;
Singleton()
{
//private constructor
}
public:
static Singleton* getInstance()
{
if(! instanceFlag)
{
single = new Singleton();
instanceFlag = true;
return single;
}
else
{
return single;
}
}
void method()
{
cout << "Method of the singleton class" << endl;
}
~Singleton()
{
instanceFlag = false;
}
};
bool Singleton::instanceFlag = false;
Singleton* Singleton::single = NULL;
int main()
{
Singleton *sc1,*sc2;
{
sc1 = Singleton::getInstance();
sc1->method();
delete sc1;
}
sc2 = Singleton::getInstance();
sc2->method();
return 0;
}
我的疑问是旧记忆会发生什么?我认为它是内存泄漏。如果是,如何在给定的代码中解决这个问题?
任何评论都将有助于理解内部结构。