dialog 有一个control变量:
class CExampleDlg : public CDialog
{
public:
  CComboBox m_cbAPMode;   //控件邦定的变量
... ...}
DlSNMPRequest2Edits *APModeRequest;
void CExampleDlg::OnBtnTest() 
{
    APModeRequest=new DlSNMPRequest2Edits(this);
    APModeRequest->AssignEdit(0,&m_cbAPMode);
... ...
}
void CExampleDlg::OnDestroy() 
{
CDialog::OnDestroy();

 delete APModeRequest;     //这里删除会出异常

}
//这是一个dll导出的类:
class DLSNMPEXPORT DlSNMPRequest2Edits
{
  CComboBox *pCombox;
... ...
}
DlSNMPRequest2Edits::AssignEdit(int i,CComboBox *aEdit)
{
    ... ...
    pCombox=new CSNMPComboBox;
    pCombox=(CSNMPComboBox*)aEdit;
     ... ....
}
DlSNMPRequest2Edits::~DlSNMPRequest2Edits()
{
    if(pCombox) delete pCombox;
}怎样删出才算安全的??

解决方案 »

  1.   

    delete APModeRequest;     //这里删除会出异常
    那一般都是判断该值是否为空,不为空再调用删除。
    那你看看该值如何。
      

  2.   

    if(!APModeRequest)
    {
        delete APModeRequest;//防止出现野指针。
        APModeRequest = NULL;
    }
      

  3.   

    代码太少,看不出来,一定是你的程序某个地方进行了非法操作,破坏了APModeReques的地址
    -----------------------------------------------
    MyCSDN 免费版 - http://community.csdn.net/Expert/TopicView1.asp?id=4608614
      

  4.   

    是这样的:
    CComboBox   m_cbAPMode
    Control变量,dialog本身在destroy会删掉,但我这里:
     pCombox=new CComboBox;
     pCombox=(CComboBox*)aEdit;dll本身new了一个CComboBox,本来是想delete new的combobox,但实际上把dialog的m_cbAPMode删掉了,但是dialog的m_cbAPMode不是dll生成的,所以就出问题了