Форум программистов, компьютерный форум CyberForum.ru

Удаление динамических объектов - C++

Восстановить пароль Регистрация
 
DG
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 3
23.11.2014, 22:47     Удаление динамических объектов #1
есть программа, в которой реализован список объектов, создающиеся динамически. Перед вами функция, которая получает указатель на один из элементов списка и нужно удалить все объекты кроме первого,не допуская утечек памяти естественно. но этот код почему то, он не удаляет объект, а на этапе delete _deletedTemp из _deletedTemp->nextPoint делает first=0x00729ac8 {nextPoint=0x00729b58 {nextPoint=0x00729ba0 {nextPoint=0xfeeefeee
должен был быть удален 0x00729ba0. ничего не понимаю

Помогите плиз


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
List *MakeEmpty(List *&temp)
    {
        while (first->nextPoint != NULL)
        {
            List *_deletedTemp = first->nextPoint;
            while (_deletedTemp->nextPoint !=NULL)
            {
                _deletedTemp = _deletedTemp->nextPoint;
            }
            delete _deletedTemp;
            _deletedTemp = NULL;
        }
        
        return(first);
    }
first объявлен в ранее
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2014, 22:47     Удаление динамических объектов
Посмотрите здесь:

C++ Понятие принципа создания динамических объектов
запись и чтение динамических объектов в файл C++
Контейнер и получение динамических объектов C++
C++ Создание и удаление объектов
STL вектор динамических объектов C++
Нехватка памяти при создании динамических объектов C++
C++ Динамический массив динамических объектов
C++ Зачем нужно освобождать память динамических объектов в деструкторе, если всё равно это сделает менеджер памяти

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nosey
 Аватар для Nosey
1185 / 352 / 102
Регистрация: 22.10.2014
Сообщений: 790
Завершенные тесты: 2
23.11.2014, 22:56     Удаление динамических объектов #2
DG, Вы удаляете последний элемент листа, но не зануляете ссылку на него у предыдущего элемента.
И вообще лучше будет делать !примерно! так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
List *MakeEmpty(List *&temp)
{
    while (first->nextPoint != NULL)
    {
        List *_deletedTemp = first->nextPoint;
        List *_deletedTemp2 = _deletedTemp->nextPoint;
        while (_deletedTemp2->nextPoint != NULL)
        {
            _deletedTemp = _deletedTemp2;
            _deletedTemp2 = _deletedTemp2->nextPoint;
            delete _deletedTemp;
        }
        delete _deletedTemp;
        first->nextPoint = nullptr;
    }
 
    return(first);
}
Yandex
Объявления
23.11.2014, 22:56     Удаление динамических объектов
Ответ Создать тему
Опции темы

Текущее время: 20:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru