2015-10-04 247 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,請使用它! 它真的有助於調試瘋狂的程序行爲。