数组越界导致SDI单文档程序启动卡死

         最近在搞一个项目,刹那间,就在吃完午饭回来,再次运行程序,程序窗口就不在显示了,思索一小会后,打开任务管理器,却看到进程已经在列表中乖乖显示,而且占了25%左右的CPU, 就这个问题卡了几天。

         经过跟踪调试代码发现,程序卡在了——if (!ProcessShellCommand(cmdInfo))——,这是MFC向导自动添加的代码,最开始想到没有改什么重要的代码,却出现了这种bug,以为是编译器或者哪儿出现的毛病,在其他同事的编译器上也是复现同样的BUG,这让我意识到,应该是我的程序自身的问题,短时间内也找不到,就把之前基础版本程序,又重新构造了一遍,在修改的过程中,调试发现,在一个类的构造函数中,我对成员数组变量进行初始化赋值,程序如下:

// 这些功能选择都是互斥项
	for(int i = 0; i = m_snMaxItem; i++)
	{
		m_IsSelected[i] = FALSE;
	}

       正确的代码应该是:  i  != m_snMaxItem, 少了一个感叹号,就出现一个巨大的悲剧!,只怪自己的粗心大意!

      今天写个日记记录一下,也算是时刻提醒一下自己!

     PS:(按理说也应该在构造函数里的for循环卡死,因为我的m_snMaxItem等于10,不知道为什么在if (!ProcessShellCommand(cmdInfo))函数里卡死! 

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
发布了9 篇原创文章 · 获赞 4 · 访问量 1055

猜你喜欢

转载自blog.csdn.net/hello071375/article/details/95044621