我想創建一個基於自定義向量的通用隊列類。我的代碼運行良好,它輸出我想給它輸入的所有內容,並且不會崩潰。但是,如果我把我的queue.pop()
,我碰到下面的程序執行完畢後:自定義隊列中的C++錯誤:被釋放的指針未被分配
a.out(6878) malloc: *** error for object 0x7fb210403981: pointer being freed was not allocated
我的矢量圍繞T類型的陣列建立,宣告T * typeArray;
。所有queue.pop()
確實是從我的矢量vector.pop_front()
調用函數。似乎是導致問題的線路是
// Assign the pointer to the second position in the array.
typeArray = &typeArray[1];
我在做什麼錯?爲什麼這不起作用?謝謝!
您沒有顯示足夠的代碼。顯示您的通用隊列類。而'std :: deque'有什麼問題?編譯所有的警告和調試信息('g ++ -Wall -g'),學會使用'gdb'調試器和[valgrind](http://valgrind.org/) –
如果沒有一些說明就不可能回答這個問題碼。但是,作爲一邊,我會建議使用'std :: deque'而不是'std :: vector'。去除矢量前面的元素效率不高。如果你看看'std :: queue',默認情況下它使用'std :: deque'。 – juanchopanza
您的代碼無法正常工作,您希望從**一行**代碼中獲得診斷結果?我想這個問題正是錯誤信息所說的。您釋放的指針與您分配的指針不同,因爲您正在pop_front中增加該指針。我也懷疑你的代碼有更多的問題比你意識到的多(也許這就是你不願意發佈它的原因)。但是再次缺少更多的代碼只是猜測。 – john