+ -
当前位置:首页 → 问答吧 → delete操作

delete操作

时间:2011-12-14

来源:互联网

C/C++ code
// .h文件中定义如下:
typedef long (* __Instance)(char * L);
typedef struct
{
    HANDLE            m_hDllInstall;
    __Instance        m_Ins ;

}tagCommDll;    

private:
    tagCommDll        *m_Dll;

//.cpp 文件中
m_Dll = new tagCommDll[m_DllCount];

//现在的问题是:我在析构时
    if (m_DllCount > 0)    
    {
        delete []m_Dll;        
        m_Dll = NULL;
    }



在 delete []m_Dll这句会出现非法访问内存的错误。
First-chance exception in Test.exe: 0xC0000005: Access Violation.

作者: jxcr1984   发布时间: 2011-12-14

m_hDllInstall 你得先FreeLibrary(m_hDllInstall);

作者: liujie250079934   发布时间: 2011-12-14

楼上说得不错,要先释放句柄资源。。。

作者: sdl2005lyx   发布时间: 2011-12-14

可能你在析构之前,改变了这个指针的地址了

作者: happyparrot   发布时间: 2011-12-14

引用 1 楼 liujie250079934 的回复:
m_hDllInstall 你得先FreeLibrary(m_hDllInstall);

++

作者: evi10r   发布时间: 2011-12-14

m_Dll 这个地址可能改变或者无效了,检查一下他引用的地方!

作者: HOUXIAN   发布时间: 2011-12-14