捋别人的老项目,又是指针崩溃,搜了一圈代码,没发现什么特殊的,以为是哪个线程又进行了删除,然后再删除的时候出的问题。冷静下来仔细想了一会,感觉不是,又去查看了一下指针分配空间的代码,终于发现了一些问题。原来的分配是根据读取配置参数进行的分配。条件如下。
if (nStart != 0 && nEnd != 0 && nStart < nEnd)
问题就出在最后一个小于号上,代码里看到的逻辑是起始小于结束才创建,可是有的地方还要进行判断。而对于有些特殊情况,起始是等于结束。
最后的解决就是把小于号改为小于等于。
业务逻辑没写出来,只能从代码上看真累。
对于没有文档的项目,说心里话,就是自己坑自己。
在老项目中遇到指针崩溃问题,通过深入代码分析,发现起始与结束条件判断的逻辑错误。原代码仅在起始小于结束时分配空间,忽略两者相等的情况。调整为小于等于后,问题得以解决。强调了文档缺失对项目维护的影响。
1万+

被折叠的 条评论
为什么被折叠?



