2015-10-04 74 views
3

我需要创建一个双打向量。问题是,如果有3个以上的值,我不能这么做。C++ - Smallbin双链表损坏

我的代码:

std::vector <double> tmp {12, 2, 3, 24, 4, 6}; 

错误:

malloc(): smallbin double linked list corrupted: 0x0000000000992400 *** 

我以前从来没见过这个错误。我知道这是关于“双重释放”的事情,但我不知道为什么在创建矢量时发生这种情况。

你知道吗,有什么问题,应该如何解决?

+0

腐败错误可能会跳到与它无关的代码上。我会说错误在于你的代码的另一部分,围绕着对malloc的调用。敲响任何铃铛? – aslg

+0

看看这些话题,他们应该帮助 http://stackoverflow.com/questions/14897157/what-does-corrupted-double-linked-list-mean – Sid

回答

2

你的代码是正确的,它工作正常。 可能是程序的其余部分包含错误。

错误当glibc变量使用的内存在程序的用户部分中被错误修改时,发生“smallbin double linked list corrupted”错误。

检测此类问题的最佳工具是Valgrind,请使用它! 它真的有助于调试疯狂的程序行为。