我在对话框类中有一个CMyObject的成员变量,如下:CMyDialog...
{
...
CMyObject m_myObject;
...
}创建
CMyDialog *pDlg = new CMyDialog;
pDlg.Create(IDD_MYDIALOG);
pDlg.ShowWindow(SW_SHOW);当我退出该对话框时,并没有调用m_myObject成员的~CMyObject()函数(即析构函数),为什么?如何才能让它调用呢?

解决方案 »

  1.   

    pDlg.Create(IDD_MYDIALOG)==>pDlg->Create(IDD_MYDIALOG);
    堆空间上分配的内存当然不会自动释放,当不再需要这个对话框时:
    pDlg->DestroyWindow();
    delete pDlg;
      

  2.   

    在对话框的析构函数中调用CMyObject()的析构函数
      

  3.   

    对话框虽然退出了,但对象并没有被释放,在DEBUG状态下,会在OUTPUT中出现MEMORY LEAK的消息,
    我赞成webber84的观点,但由于API中对CWND的DESTROY介绍中,好象说不必再调用DELETE了,日子久了,也记不清楚了
      

  4.   

    我在CMyDilaog的析构函数中调用了this->DestroyWindow(),但还是无法调用m_myObject的析构函数
      

  5.   

    我发现连CMyDialog自己的析构函数都不曾被调用!
      

  6.   

    说过了,用new创建的对象的析构函数是不会被自动调用的,要显式地delete