все вроде даже работает, вопрос как проверить, что действительно все очистилось?
Прислать код, мы посмотрим
void clearMatrix(int** matrix, int rows) { for (int i = 0; i < rows; i++) { delete[] matrix[i]; } }
int** getMatrix(int rows, int columns) { int** matrix = new int*[rows]; for (int i = 0; i < rows; i++) { matrix[i] = new int[columns]; } for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { matrix[i][j] = 0; } } return matrix; }
Ну, как минимум, ОНОГО delete не хватает...
Хочешь сказать, надо ещё и каждую ячейку отдельно удалить в строке?
Нет. проверь внимательно код создания и код удаления, и соотнеси каждое выделение и удаление, парами. И ты найдёшь проблему
Сам указатель matrix ещё очистить?
Как раз сам указатель очищать не обязательно
Так, ну с указателем я понял - это первый элемент массива указателей, удалится на первой итерации for, а что ещё не так не пойму, вроде при создании на каждую строку память выделил, и при очистке каждую строку удалил
Блин удали массив указателей на строки, сам.
Все, понял зачем, спас
Обсуждают сегодня