1 | ||||||
Поменять make и release так, чтобы организовать правильное уничтожение объектов и освобождение памяти21.08.2016, 15:40. Показов 752. Ответов 15
Метки нет (Все метки)
Имеем код:
Если ввод удался, то создается соответствующий объект (это может быть расширено в дальнейшем). В данном коде деструкторы не виртуальные, поэтому в release будет вызван лишь деструктор базового класса. Задача: Поменять make и release таким образом, чтобы организовать правильное уничтожение объектов и освобождение памяти. Учтите, что сами классы, а также функцию main менять нельзя. Также в будущем планируется добавлять наследников Base, поэтому решение должно быть расширяемым без особого труда.
0
|
21.08.2016, 15:40 | |
Ответы с готовыми решениями:
15
Правильное освобождение памяти Правильное освобождение памяти Правильное освобождение памяти при std::vector Уничтожение объектов в инициализированной памяти. sed::allocator |
Падаван С++
447 / 261 / 89
Регистрация: 11.11.2014
Сообщений: 916
|
||||||
21.08.2016, 15:50 | 2 | |||||
HelicopterK52,
Кликните здесь для просмотра всего текста
0
|
Падаван С++
447 / 261 / 89
Регистрация: 11.11.2014
Сообщений: 916
|
|
21.08.2016, 15:52 | 4 |
HelicopterK52, забыл
0
|
21.08.2016, 15:59 [ТС] | 5 |
Кликните здесь для просмотра всего текста
obivan, только у Вас функция release совсем бесполезная. В параметрах - копия указателя, так что reset ни на что не повлияет. Уничтожение будет происходить в конце каждой итерации цикла в main. В данном случае это не страшно, но всё же.
1
|
obivan
|
21.08.2016, 16:01
#6
|
Не по теме: HelicopterK52, а, точно, спасибо что заметили :)
0
|
245 / 139 / 53
Регистрация: 23.11.2015
Сообщений: 394
|
||||||
21.08.2016, 19:15 | 7 | |||||
а я подумал про что-то такое и дооолго костылил
Кликните здесь для просмотра всего текста
0
|
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
|
22.08.2016, 17:07 | 8 |
obivan, HelicopterK52, Вы сами-то этот код запускали? Как умный указатель сделает из невиртуального деструктора виртуальный?
0
|
Падаван С++
447 / 261 / 89
Регистрация: 11.11.2014
Сообщений: 916
|
|
22.08.2016, 17:20 | 9 |
avgoor, http://stackoverflow.com/quest... -ptr-magic
Добавлено через 13 секунд запустите то код и проверьте
0
|
22.08.2016, 17:22 [ТС] | 10 |
А Вы?
http://rextester.com/YCL74424 У shared_ptr под капотом некий "хелпер", который знает какой объект внутри, так что всё нормально будет. То есть shared_ptr не сделает деструктор виртуальным, он лишь произведет правильное уничтожение объекта. Можете поизучать соответствующую литературу, документацию.
0
|
22.08.2016, 17:28 | 11 |
HelicopterK52, не осилил, лень читать такую тягомотину, старайся сделать задачку максимально сжатой по коду (10 строк максимум) и вообще по объему.
И тогда прочтение мною твоего поста обеспечено.
0
|
22.08.2016, 17:31 [ТС] | 12 |
Не осилил - не лезь.
Да мне как-то всё равно, прочитаешь ты его или нет. Надеюсь, я понятно выразился - ты не пуп земли. Так что учти это, когда следующий пост будешь писать. Как говорится, не указывайте мне что делать и...
0
|
Ferrari F1
|
22.08.2016, 17:34
#13
|
Не по теме: HelicopterK52, воу-воу, палехче, бро) Давай только без резкостей. Это сейчас нужно меньше всего :)
0
|
HelicopterK52
|
22.08.2016, 17:34
[ТС]
#14
|
0
|
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
|
22.08.2016, 17:46 | 15 |
HelicopterK52, obivan, Тьфу, блин, ступил. Обычно unique_ptr возвращается, а я сейчас "выхожу из состояния глубокой отладки", вот и заклинило.
0
|
22.08.2016, 17:49 [ТС] | 16 |
avgoor, да, с unique_ptr такое не прокатит
0
|
22.08.2016, 17:49 | |
22.08.2016, 17:49 | |
Помогаю со студенческими работами здесь
16
Освобождение памяти от объектов Освобождение памяти динамически созданных объектов Освобождение памяти для объектов производного класса Освобождение памяти из под Объектов в статическом массиве указателей Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |