我是動態分配和指針的新手。我將嘗試從文件中填充2D動態數組,然後在其上應用迷宮求解算法(牆跟隨器)。什麼時候應該使用刪除? (在動態創建的2d陣列後不刪除的後果)
假設我創建了一個動態分配的二維數組是這樣的:
int** board;
board = new int* [rowsize];
for(int row = 0; row < rowsize; row++)
{
board[row] = new int[colsize];
}
如果我知道,我不會使用這個指針,另一個變量,我可以不使用刪除board
脫身?如果不是可能會出錯的地方(如果你熟悉牆追隨者算法)?又如何刪除一個指針指針,delete board
就足夠了?
這是我沒有得到。假設我只是爲了一個目的而使用該程序。含義:從文件中讀取數據,通過迷宮,打印出路徑,然後退出。它是如何還有內存泄漏?當我使用指針指向另一個位置時,我認爲引用了內存泄漏,現在前一個位置是不可訪問的。在這樣一個簡單的程序中,我很難想象'泄漏'的內存。 –
@LucAux當你調用'new'和'delete'是我們的平衡時,會發生內存泄漏。當程序退出時,OS清理程序後面的「混亂」,包括內存泄漏,未關閉的文件描述符等等。但是,如果您想通過內存分析器運行您的代碼,或者其他人複製您的代碼以便在循環中運行代碼,最好自行清理它們。 – dasblinkenlight