项目场景:
C++程序,在写遍历BTree的过程中,涉及到变量的释放,编译后报错:malloc(): unsorted double linked list corrupted
问题描述:
一开始直接百度错误原因,有文章说是栈空间大小不足或是缺少python包,试过这两种方法后,均不能解决问题。
tuple2->DeleteIfAllowed();
}
delete cid;
delete btree_iter;
tuple1->DeleteIfAllowed();
原因分析:
继续搜索可能的原因,其中一篇文章提到是否涉及多次free,思路打开,发现代码中确实存在连续释放的代码。
找到cid的定义,发现是把要进行传值的cid删掉了,所以重新定义一个变量cellid存储该值,释放时释放cellid。
解决方案:
比较简单粗暴的方法是直接删掉一行影响最小的代码,也就是整形变量cid,删掉后确实没有再报这个错误,不过又报其它的错误了。
所以,代码还需要再修改,该释放的还是要释放,先留个坑在这里。