我寫了一個模擬矩陣的代碼。 這個矩陣有一個指向指針的指針,實際上它是一個鏈表。我有兩個 - 一個用於行,第二個用於列。 每個數組索引它的矩陣行/列第一位,列表是rox/col中的其餘數字。調試斷言失敗:_CrtIsValidHeapPointer(block)
我可以發送代碼,但它不短。
我的問題是,即時通訊做了一些操作後,我試圖刪除最後的矩陣 - 它彈出我這個失敗的問題。 我已經tryed改變我的代碼,我發現問題是在這裏:
delete this->rowsArray;
this->rowsArray = newRowArray; ->here
delete this->colsArray;
this->colsArray = newColArray; ->here
rowsArray廣告colsArray initilized這樣的:
rowsArray = new matrixNode*[lastRowPlace+1]; colsArray = new matrixNode*[lastColPlace+1];
同有關newColsArray和行... 我希望你能給我一個建議,因爲我真的不知道該怎麼辦:(
**只是忘了說,問題只是在析構函數彈出...
的問題是其他地方。 雖然'rowsArray'被正確分配,但是在創建'rowsArray'之後,您在代碼的某處更改了指針。此時,它不再是有效的堆指針。 – abelenky
也許您已經刪除了在析構函數中釋放的塊,而沒有將指針設置爲nullptr。也許你用一些無關的代碼破壞了堆。也許你的矩陣類有一個不正確的複製構造函數,賦值運算符... – drescherjm
這個問題是由「做一些行動」造成的。你應該重新考慮你的代碼 - 一個鏈表的數組不是一個合理的矩陣表示。 – molbdnilo