常规的做法是在该指针使用完后删除并赋值为NULL,这样再判断是否为NULL就可以,但目前的问题是该指针指向的是非模态对话框,对话框的销毁在其自身中,这样在主程序中该对话框指针就没有机会设置为NULL了。除非在用户关闭非模态对话框时通过消息返回给主程序,主程序收到子窗体的关闭消息后再设置该指针为NULL。感觉很麻烦。
有没有更好的办法解决这样问题?

解决方案 »

  1.   

    IsBadReadPtr
    IsBadWritePtr
    还有另外一些函数,你在MSDN中查询上面的函数,会有相关联接。
      

  2.   

    为什么删除自身就没法设置指针为NULL?这种情况下你一般有一个固定的变量保存指针值,找到哪个变量并设置为NULL即可CMyDialog *g_pDlg = new CMyDialog();CMyDialog::OnNcDestroy()
    {
        g_pDlg = NULL;
        delete this;
    };对于窗口,也许IsWindow(g_pDlg->m_hWnd)也是个好办法
      

  3.   

    明天结贴
    to yang79tao
      感谢,这个函数可以用to arong1234
      我还是不太明白,我这固定变量在主窗体中,也就是说我在主窗体里创建的子窗体,但要销毁的是子窗体,OnNcDestroy()也是子窗体吧。如果OnNcDestroy()是主窗体函数,那就是主窗体关闭时才处理,其实我是想在主窗体没有关闭时判断子窗体指针是否有效。