最近在搞一个项目,刹那间,就在吃完午饭回来,再次运行程序,程序窗口就不在显示了,思索一小会后,打开任务管理器,却看到进程已经在列表中乖乖显示,而且占了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))函数里卡死!