今天在调试程序的时候,发现一个变量的值莫名奇妙的发生改变
一直很郁闷。
经过检查代码,
发现时这个变量附近的一个数组越界引起的
代码如下:
定义文件
int m_nCombination[7][5];
int m_nPDorder,m_nUltraorder; //
发现m_nPDorder 值经常出现错误的值,但是又找不到改变它的地方。
后来发现
//ReCalculate
for (int i=0; i<7; i++)
for (int j=0; j<7; j++)
{
if (m_nCombination[i][j] > m_nCombination[nPDorder][nUltraOrder])
{
m_nCombination[i][j] -= 1;
}
}
注意红色字体,
本来数组时7*5 的,但是不小心这里写成了7
可能覆盖了下面的m_nPDorder
...............................
记住这样的错误。