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;
}怎样删出才算安全的??
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;
}怎样删出才算安全的??
那一般都是判断该值是否为空,不为空再调用删除。
那你看看该值如何。
{
delete APModeRequest;//防止出现野指针。
APModeRequest = NULL;
}
-----------------------------------------------
MyCSDN 免费版 - http://community.csdn.net/Expert/TopicView1.asp?id=4608614
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生成的,所以就出问题了