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