上面的方法在调试中没有发现进入CGarbo 的析构函数里释放。
改用以下方法进行释放
/// h ///
#pragma once
class GPIB_API
{
public:
static GPIB_API* GetInstance()
{
if( NULL == pGPIB)
{
pGPIB = new GPIB_API();
}
return pGPIB;
}
private:
GPIB_API(void);
virtual ~GPIB_API(void);
static GPIB_API* pGPIB;
friend class GPIB_Dustman;
};
/// cpp ///
class GPIB_Dustman
{
public:
GPIB_Dustman()
{
int k = 0;
}
~GPIB_Dustman()
{
GPIB_API* pGPIB = GPIB_API::GetInstance();
if( NULL != pGPIB)
{
delete GPIB_API::pGPIB;
}
}
};
static GPIB_Dustman gpibDustman;
GPIB_API* GPIB_API::pGPIB = NULL;
GPIB_API::GPIB_API(void)
{
}
GPIB_API::~GPIB_API(void)
{
}
改用以下方法进行释放
/// h ///
#pragma once
class GPIB_API
{
public:
static GPIB_API* GetInstance()
{
if( NULL == pGPIB)
{
pGPIB = new GPIB_API();
}
return pGPIB;
}
private:
GPIB_API(void);
virtual ~GPIB_API(void);
static GPIB_API* pGPIB;
friend class GPIB_Dustman;
};
/// cpp ///
class GPIB_Dustman
{
public:
GPIB_Dustman()
{
int k = 0;
}
~GPIB_Dustman()
{
GPIB_API* pGPIB = GPIB_API::GetInstance();
if( NULL != pGPIB)
{
delete GPIB_API::pGPIB;
}
}
};
static GPIB_Dustman gpibDustman;
GPIB_API* GPIB_API::pGPIB = NULL;
GPIB_API::GPIB_API(void)
{
}
GPIB_API::~GPIB_API(void)
{
}