1. 认识bug:
这是溢出数组的异常情况,就是你自己作死,数组越界了,关键是这种异常没有报错提示,小白真的一脸懵逼!
2. bug出现的原因:
一般情况都是在做循环的时候,判断条件条件包含数组边界,而在退出循环之前,还会有一步,i++ 或者i--;于是乎就越界了。那我自己举个例子:原本定义个数组 arr[5][5], 结果在for循环的时候:
for (i = 0; i <= 4; i++)
咋一看好像也没毛病 但可怕的地方就在于这里,让你看着人畜无害,压根没毛病啊!!!就是这种时候,上面那个bug出现了,让你抓肝挠肺 不多说了,我上一条帖子做了个五子棋,跑起来很丝滑。然后有人提示我加个行列序号,很不错。我不想改太多代码,就手残在循环的判断条件加个等号,当时觉得自己太牛逼了,后来才知道,那是苦逼的开始 原本没有序号的时候,棋盘规格15×15的时候 ROW = 15, COL=15, 加了序列号后,本该是16×16的,结果我懒,或者说没那个意识,没有改ROW和COL,依旧是用15, 只不过我把边界都用上了0~15,然后妥妥的在for循环的时候,board[ROW][COL]就越界了。出现了上图的bug.
3. 反省吧
以后碰到循环的时候,千万别把左右边界都用上!!!(我也不知道有没有特例),总之注意细节就好,bug都是细节不至于导致的。