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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
DG
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 3
#1

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

23.11.2014, 22:47. Просмотров 272. Ответов 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++
Привет. Как можно грамотно с точки зрения ООП реализовать класс-контейнер, где будут хранится объекты? Объекты не однотипные, а...

STL вектор динамических объектов - C++
Нужно время от времени ложить в std::vector (или std::list) динамические объекты. Под динамическим объектом здесь понимается объект,...

запись и чтение динамических объектов в файл - C++
Как быть, че делать? Особенно при чтение файла, ведь неизвестно какого он размера. И как бы все это разместить в одной функции, ну например...

Понятие принципа создания динамических объектов - C++
Например я написал такой код: #include <iostream> #include <string> using namespace std; class Box { ...

Нехватка памяти при создании динамических объектов - C++
Создаю 4 динамических объекта. 3 вектора и матрица. матрица - это результат перемножения двух векторов. третий вектор- это суммы...

Реализовать движущийся графический объект с помощью статических и динамических объектов - C++
Добрый день. Решаю задачу из методички и поставлена она следующим образом: используя технологию объектно-ориентированного...

Удаление динамических массивов - C++
Здравствуйте, вобщем проблема в этом куске кода: int *makeDigits(int n) { int *digits = new int; int i = 2; while (n != 0) ...

Зачем нужно освобождать память динамических объектов в деструкторе, если всё равно это сделает менеджер памяти - C++
Не скажу за все ОС-и, но под Windows есть менеджер памяти. Когда по ходу кода встречается new, ну или что - то другое для алокации...

Удаление объектов GDI - C++
Почему нужно удалять созданные (например так: hRgn = CreateRectRgn(0, 0, 0, 0); ) объекты GDI? ну то есть зачем их удалять явно?...

Удаление объектов класса - C++
Никак не могу понять, как правильно освободить память. Подскажите пожалуйста в чем ошибка. #include "Head.h" int min(int a, int b) { ...

Создание и удаление объектов - C++
Люди, прошу прошения за тупой вопрос, но что-то в гугле сходу не нашел. Вот, допустим, есть класс реализующий простенькую очередь. ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nosey
1344 / 395 / 107
Регистрация: 22.10.2014
Сообщений: 860
Завершенные тесты: 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     Удаление динамических объектов
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru