我需要创建一个 double vector 。问题是,如果有超过 3 个值,我就不能这样做。
我的代码:
std::vector <double> tmp {12, 2, 3, 24, 4, 6};
错误:
malloc(): smallbin double linked list corrupted: 0x0000000000992400 ***
我以前从未见过这个错误。我知道这与“双重释放”有关,但我不知道为什么在创建 vector 期间会发生这种情况。
您知道问题出在哪里,我应该如何解决?
最佳答案
你的代码是正确的,它工作正常。
可能是程序的其余部分包含错误。
当 glibc 变量使用的内存被错误地从程序的用户部分修改时,会发生错误“smallbin 双链表损坏”。
检测此类问题的最佳工具是 Valgrind ,使用它!
它真的有助于调试疯狂的程序行为。
关于C++ - Smallbin 双链表损坏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32934853/