菜鸟问题:如何手动撤消单例模式中的内存空间!避免Singleton理论中的内存泄漏? (参与有分)
xqk 2006-06-19 12:03:19 大家都知道,在VC中单例设计模式的生存空间与进程的生存空间是一样的,所以以进程结束来负责撤消单例模式的空间,但是进程会认为单例模式存在内存泄漏问题!
所以说我现在想使用STL的Functor来手动释放内存空间,但发现一样会出现内存违规访问,大家来帮忙看看怎样写这段代码才能释放掉单例的内存空间?
class ReleaseSingleton;
class CPSMirrorSocket
{
friend ReleaseSingleton;
public:
static CPSMirrorSocket* GetInstance();
private:
CPSMirrorSocket* instance;
}
class ReleaseSingleton
{
public:
operator ()()
{
CPSMirrorSocket* socket = CPSMirrorSocket::GetInstance();
delete socket->instance; //存在违规访问错误
socket->instance = NULL;
}
};