释放只有声明没有定义的对象,都是耍流氓

余生颓废 提交于 2021-01-14 00:35:36

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!