int** build_matrix(unsigned height, unsigned width){
int** arr = new int*[height];
for(unsigned i = 0; i < width; i++)
arr = new int;
return arr;
}
Удаление динамической матрицы, ошибка работы с памятью
Код:
Затем осуществляется некая её обработка, и перед завершением программы нужно освободить память, занимаемую матрицей. Корректно это сделать у меня не получается. Освобождаю память так:
Код:
void delete_matrix(int** arr, unsigned height, unsigned width){
for(unsigned i = 0; i < height; i++)
delete [] arr;
}
for(unsigned i = 0; i < height; i++)
delete [] arr;
}
Во время отработки цикла очистки памяти вылазит сообщение об обнаружении повреждения кучи.
Помогите, пожалуйста, разобраться, где я намудрил.
Код:
int** build_matrix(unsigned height, unsigned width){
int** arr = new int*[height];
for(unsigned i = 0; i < [color=red]height[/color]; i++)
arr = new int[color=red][width][/color];
return arr;
}
void delete_matrix(int** arr, unsigned height, unsigned width){
for(unsigned i = 0; i < height; i++)
delete [] arr;
[color=red]delete [] arr;[/color]
}
int** arr = new int*[height];
for(unsigned i = 0; i < [color=red]height[/color]; i++)
arr = new int[color=red][width][/color];
return arr;
}
void delete_matrix(int** arr, unsigned height, unsigned width){
for(unsigned i = 0; i < height; i++)
delete [] arr;
[color=red]delete [] arr;[/color]
}
Действительно, обидные ошибки. Что-то я совсем сдаю позиции, аж стыдно. Перегреваюсь.