Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Удаление динамической матрицы, ошибка работы с памятью

10K
28 июля 2007 года
Shalfey
47 / / 10.03.2007
Динамическая матрица создаётся следующим способом:
 
Код:
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;
}

Во время отработки цикла очистки памяти вылазит сообщение об обнаружении повреждения кучи.
Помогите, пожалуйста, разобраться, где я намудрил.
276
28 июля 2007 года
Rebbit
1.1K / / 01.08.2005
Код:
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]
}
10K
28 июля 2007 года
Shalfey
47 / / 10.03.2007
Огромное спасибо.
Действительно, обидные ошибки. Что-то я совсем сдаю позиции, аж стыдно. Перегреваюсь.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог