Ubuntu 报错 malloc: unsorted double linked list corrupted

时间:2025-04-01 09:42:17

项目场景:

C++程序,在写遍历BTree的过程中,涉及到变量的释放,编译后报错:malloc(): unsorted double linked list corrupted


问题描述:

一开始直接百度错误原因,有文章说是栈空间大小不足或是缺少python包,试过这两种方法后,均不能解决问题。

		tuple2->DeleteIfAllowed();
  }

        delete cid;
        delete btree_iter;

        tuple1->DeleteIfAllowed();

原因分析:

继续搜索可能的原因,其中一篇文章提到是否涉及多次free,思路打开,发现代码中确实存在连续释放的代码。
找到cid的定义,发现是把要进行传值的cid删掉了,所以重新定义一个变量cellid存储该值,释放时释放cellid。


解决方案:

比较简单粗暴的方法是直接删掉一行影响最小的代码,也就是整形变量cid,删掉后确实没有再报这个错误,不过又报其它的错误了。
所以,代码还需要再修改,该释放的还是要释放,先留个坑在这里。