读书人

关于单件模式的有关问题

发布时间: 2012-03-13 11:21:11 作者: rapoo

关于单件模式的问题
//以下是测试类,我想在使用完成后删除单件实列.
???可系统提示我 内存泄露.是关于三个参数的.
多次使用,也仅提示一次泄露.
class CTest
{
public:

static CTest* GetInstance();
BOOL Play();
BOOL Stop();
private:
CTest();
virtual ~CTest();
public:
CString m_param1;
DWORD m_param2;
UINT_PTR m_param3;
};

static CTest* g_test =NULL;
CTest* CTest:: GetInstance()
{
if(g_test == NULL)
{
g_test = new CTest;
}
return g_test ;
}
BOOL CTest:: Play(){ do something }
BOOL CTest:: Stop()
{
...
delete g_test ;
g_test = NULL;
}

[解决办法]
是不是Stop()之后又调用了GetInstance() ,或者g_test别的地方又被赋值了。

读书人网 >软件开发

热点推荐