求助!dialog关闭时的异常
netas 2004-11-09 01:42:14 笔者在win2k professional上的vc6.0环境下调试过程中遇到一个dialog关闭时的异常,百思不得其解,特地向各位大侠请教。
由于原来的代码很庞大,所以我就简略的说一下问题:
类的定义:
typedef struct STRUCT_SIF_PORT
{
BOOL bValid;
CString strAvailVPNum;
CString strAvailBW;
int VPIList[VALID_VPI_NUM];
BOOL Changed[VALID_VPI_NUM];
}struct_sif_port;
typedef std::vector<struct_sif_port> sif_port_vector;
class OdtGUIMacroPortRemapDlg : public Dialog
{
public:
afx_msg void OnBtnApply();
afx_msg void OnBtnExit();
//...
protected:
sif_port_vector m_sif_port_vector;
//...
}
该dialog以showmodule的方式被显示。
在点击btnexit时被关闭
void OdtGUIMacroPortRemapDlg::OnBtnExit()
{
// TODO: Add your control notification handler code here
//clear changed flag
OdtGUIMacroCommonDialog::EndDialog(0);
}
奇怪的是在onbtnapply时
void OdtGUIMacroPortRemapDlg::OnBtnApply()
{
// TODO: Add your control notification handler code here
// save data code ...
/* clear changed flag
sif_port_vector::iterator iter = m_sif_port_vector.begin();
for (; iter!=m_sif_port_vector.end(); ++iter)
{
for(int jj=0; jj<VALID_VPI_NUM; jj++);
if(iter->Changed[jj])
iter->Changed[jj]=false;
}
*/
}
如果将/* */之间用于清除修改的标记的代码注释掉,一切正常
如果不注释掉,该Dailog关闭时就会出现异常,debug的结果显示是vetor"m_sif_port_vector"的析构函数出现异常。
这到底是怎么回事?