defs.h 文件
class CFtBreakInfo;
struct struc_file_status
{
HANDLE m_hFile;
CFtBreakInfo *m_pBreakInfo; //在程序的其他的地方new出内存
struc_file_status(void)
{
m_hFile = INVALID_HANDLE_VALUE;
m_pBreakInfo = NULL;
};
~struc_file_status()
{
/*
这里没法做到真正内存释放,即不会调用CFtBreakInfo的析构函数
解决方案,如下
*/
if (m_pBreakInfo)
delete m_pBreakInfo;
m_pBreakInfo = NULL;
}
};
解决方案:
增加defs.cpp
#include "FtBreakInfo.h" /*将CFtBreakInfo结构的头文件包含进来,让delete有迹可寻*/
struc_file_status::~struc_file_status()
{
/*
这样不会有内存泄漏了
*/
if (m_pBreakInfo)
delete m_pBreakInfo;
m_pBreakInfo = NULL;
}
总结:
释放只有声明没有定义的对象,都是耍流氓!!!!
关于imcomplete type的说明:
http://msdn.microsoft.com/en-us/library/200xfxh6.aspx
来源:oschina
链接:https://my.oschina.net/u/1014629/blog/127184