Delete[] не удаляет массивыC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Delete[] не удаляет массивы

Сообщение Anonymous »

Я создаю класс-матрицу. Для этого я построил массив двойных указателей. Итак, я пытаюсь реализовать деструктор для этого класса Matrix, но delete[] работает не так, как ожидалось.
Вот код:

Код: Выделить всё

Matrix::Matrix(int r, int c):rowsM(r), colsM(c)
{
matrixM = new double* [rowsM];
assert(matrixM != NULL);

for(int i=0; i < rowsM; i++){
matrixM[i] = new double[colsM];
assert(matrixM[i] != NULL);
}
sum_rowsM = new double[rowsM];
assert(sum_rowsM != NULL);

sum_colsM = new double[colsM];
assert(sum_colsM != NULL);
}

void Matrix::destroy()
{
for(int i=0; i < rowsM; i++){
delete[] matrixM[i];
assert(matrixM[i] == NULL);
}

delete[] matrixM;
assert(matrixM != NULL);

delete[] sum_rowsM;
assert(sum_rowsM == NULL);

delete[] sum_colsM;
assert(sum_colsM == NULL);
}

Я пробовал работать с delete, но безуспешно, поэтому поискал и решил, что delete[] был лучшим выбором, но результат на Cygwin (который Я использую для компиляции) это

Код: Выделить всё

assertion "matrixM[i] == NULL" failed: file "matrix.cpp", function: void Matrix::destroy()
Aborted
это означает, что удаление явно не удалось. пожалуйста, пришлите помощь

Подробнее здесь: https://stackoverflow.com/questions/791 ... the-arrays
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»