0
我目前正在使用一個特定的API,因此我必須使用原始指針,但是考慮到指針的特定佈置,我不確定如何最好地去清除內存並避免任何未定義的行爲。取消分配這個特定的二維數組的內存
double *data1 = new double[rows*columns];
double **data2 = new double*[rows];
data2[0] = data1; // Point to first row
for (int i = 1; i < columns; i++) {
data2[i] = data2[i - 1] + rows;
}
我試過類似下面的東西,但我不認爲它是正確的。
for(int i = 0; i < rows; i++) {
delete [] data2[i];
}
delete [] data2;
delete [] data1;
你有沒有考慮使用['標準:: VECTOR'(http://en.cppreference.com/w/cpp/container/vector)代替? –
如果你有2個'new's,你應該有2個'delete's。你的例子有'rows + 2'刪除。基本上,請計算您擁有的新聞和刪除數量,最終應該是平等的。 –
刪除的順序在這裏有什麼不同嗎? – Alexander