释放只有声明没有定义的对象,都是耍流氓
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:/