求助!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"的析构函数出现异常。
这到底是怎么回事?




...全文
161 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
netas 2004-11-09
  • 打赏
  • 举报
回复
多谢楼上各位的热心解答,hunter606(混特)的话很对。
是我在for语句后无意中加了一个";",导致數組超界造成的!去掉分号就正常了。
hunter606 2004-11-09
  • 打赏
  • 举报
回复
由於for語句後多了個';';從而使得每次調用下一個語句if(iter->Changed[jj])時中的jj值變為VALID_VPI_NUM,可能由此引起數組超界!
goodluckyxl 2004-11-09
  • 打赏
  • 举报
回复
和这个分号有多大关系 我看不见得
是析构时异常
说明内容已经被异常情况下改写了
;是可能是不能正确处理的一个方面
但我觉得不应该是导致 析构异常
goodluckyxl 2004-11-09
  • 打赏
  • 举报
回复
在析购前看看 clear掉
看看还会出错么

如果还有内存异常 查查 是否有地方的memcpy 或者memset等拷贝处理
覆盖到了容器内部内存
  • 打赏
  • 举报
回复
同意 winco(老狼) ( ) 信誉:100
xuzheng318 2004-11-09
  • 打赏
  • 举报
回复
帮你up了
winco 2004-11-09
  • 打赏
  • 举报
回复
for(int jj=0; jj<VALID_VPI_NUM; jj++);//这个地方的分号干什么的???
if(iter->Changed[jj])
iter->Changed[jj]=false;

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧