Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 31.05.2015
Сообщений: 8

Освобождение памяти динамически созданных объектов

22.08.2015, 12:57. Показов 778. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, есть к примеру три класса: Class1, Class2, Class3.

В Class2 имеется метод, в котором динамически создаю объекты класса Class1 и записываю в vector<Class1*>,
а в Class3 динамически создаю объекты класса Class2 и записываю в vector<Class2*>. Как правильно освобождать память, но чтобы до вызова деструктора Class3 объекты не удалялись? Другими словами как можно в деструкторе Class3 вызвать деструктор Class2, а в деструкторе Class2 деструктор Class1?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.08.2015, 12:57
Ответы с готовыми решениями:

Запись динамически созданных объектов в файл
Всем привет. Хочу спросить, пока не наделал глупостей. Есть два класса. //первый класс, родитель class someObj { ...

Удаление динамически созданных объектов собственного класса
Подскажите пожалуйста, у меня есть два класса, член одного - динамический массив элементов другого класса. При попытке удалить массив -...

Перемножение матриц и освобождение динамически выделенной памяти
Поставлена задача написать различные алгоритмы заполнения/перемножения матриц и сравнить их по эффективности на больших объемах данных. ...

4
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
22.08.2015, 13:03
C++
1
2
3
4
5
6
7
8
9
10
11
class test{
    public:
    test(){cout<<"test created"<<endl;};
    ~test(){cout<<"test deleted"<<endl;};
 
};
using namespace std;
int main(){
    test *a = new test;
    a->~test();
}
1
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
22.08.2015, 13:10
В деструкторе Class3 удаляй объекты Class2. А в деструкторе Class2 объекты Class1.
Но ты можешь использовать вектор из unique_ptr, например, чтобы вручную не вызывать delete.

Добавлено через 3 минуты
dzrkot, этот код про то, как примерно сделать утечку памяти?
1
12 / 12 / 8
Регистрация: 12.08.2015
Сообщений: 55
22.08.2015, 13:11
Если по хорошем, наверное в классе 3 (который сверху) должна быть вируальная функция удаления из вектора
https://ru.wikipedia.org/wiki/... 0%BE%D0%B4
а если так, тогда почему бы не использовать еще и виртуальный деструктор?
http://cpp-reference.ru/articl... estructor/

П.С. мб ссылочки не топовые)
1
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
22.08.2015, 13:55
Цитата Сообщение от Velesthau Посмотреть сообщение
dzrkot, этот код про то, как примерно сделать утечку памяти?
да, именно.

Добавлено через 11 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <iterator>
#include <algorithm>
#include <vector>
 
using namespace std;
 
class test{
    public:
    test(){cout<<"test created"<<endl;};
    ~test(){cout<<"test deleted"<<endl;};
};
class test2{
    test* t;
    public:
    test2(){
        cout<<"test2 created"<<endl;
        t = new test;
    };
    ~test2(){
        cout<<"test2 deleted"<<endl;
        delete t;
    };
};
class test3{
    test2* t2;
    public:
    test3(){
        cout<<"test3 created"<<endl;
        t2 = new test2;
    };
    ~test3(){
        cout<<"test3 deleted"<<endl;
        delete t2;
    };
};
 
using namespace std;
int main(){
    test3 *a = new test3;
    delete a;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.08.2015, 13:55
Помогаю со студенческими работами здесь

Освобождение памяти для объектов производного класса
Всем привет. Не могу найти инфу в интернете, всё перерыл, но понял что случай специфичный у меня. Придумал себе конструкцию, но не уверен,...

Освобождение памяти из под Объектов в статическом массиве указателей
Всем добрый вечер! Решил расширить программу из книжки Лафорте Р. ООП в С++ стр. 574 путем добавления функции удаления данных о конкретном...

Поменять make и release так, чтобы организовать правильное уничтожение объектов и освобождение памяти
Имеем код: #include &lt;iostream&gt; struct Base { public: ~Base() { std::cout &lt;&lt; &quot;Base::~Base&quot; &lt;&lt; std::endl; } ...

Резервирование памяти/освобождение памяти для трехмерного массива
Необходимо создать трехмерный массив (A), в котором элементы вдоль направления Z выли бы выровнены по 16 байт. Есть две проблемы: ...

Семафоры для динамически созданных потоков
Помогите разобраться, я динамически создаю поток, который имеет общие переменные с головным потоком. Для избежания конфликтов использую,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru