|
383 / 280 / 112
Регистрация: 28.04.2015
Сообщений: 1,726
|
|||||||||||
Повторный вызов деструктора26.12.2020, 08:41. Показов 5501. Ответов 67
Привет!
Есть класс TVector и есть у него деструктор вот такой:
"надо корректно обрабатывать ситуацию повторного вызова деструктора. В этом случае деструктор не должен пытаться освобождать в динамической памяти объекты повторно" я не оч.выкупил, что требуется, но решил добавить такую проверку в деструкторе:
0
|
|||||||||||
| 26.12.2020, 08:41 | |
|
Ответы с готовыми решениями:
67
Повторный вызов деструктора
Повторный вызов деструктора для объекта |
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 26.12.2020, 14:43 | ||
|
сама формулировка - за гранью здравого смысла. вызов деструктора - это смерть объекта. после того, как деструктор отработал, объект - мёртв. технически, "повторный запуск деструктора", это - ситуация, когда итак уже мёртвый объект умирает ещё один раз. ты осознаешь какой это бред?
0
|
||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
| 26.12.2020, 14:43 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 26.12.2020, 14:44 | ||
|
они избыточны. твой объект умирает. он все равно уже не воспользуется этими данными.
0
|
||
|
383 / 280 / 112
Регистрация: 28.04.2015
Сообщений: 1,726
|
|||
| 26.12.2020, 14:49 [ТС] | |||
|
если бы все было четко и ясно, то давно бы реализовал все без проблем. меня вообще смутило, что в постановке задания докапываются до этого деструктора! у него одна цель: удалить дин.память. Зачем что-то еще морочить с ним) Добавлено через 52 секунды
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 26.12.2020, 16:01 | |
|
0
|
|
|
Комп_Оратор)
|
|||
| 26.12.2020, 16:15 | |||
|
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||||||
| 26.12.2020, 16:18 | |||||||||||||||||
|
только ты не понял. тебя никто не просит дважды убивать объект. напротив, твоя задача: защитить код от ничайного "двойного умирания". как вообще может так случиться, что объект помер дважды?
- либо просто запретить второй вызов delete - либо сделать так, что бы второй вызов delete не приводил к смерти объекта
а что, если у нас многопоточная среда? указатель ptr - глобальный,а значит доступ к объекту могут получить несколько потоков. что, если несколько потоков одновременно начнут убивать наш объект? что бы гарантировать надежность кода, нужно обеспечить thread-safe защиту для указателя ptr. сделать это можно самыми разными способами. есть убер-надежные и элегантные RAII. я же приведу пример попроще:
тщательно осмыслив материал, ты ответишь своему преподавателю: 1. указатели на динамическую память необходимо обнулять, с целью предотвратить ущерб от ничайного двойного delete2. в многопоточной среде, доступ к функциональности, способной убить объект, должен осуществляться под защитой мутекса.
0
|
|||||||||||||||||
|
383 / 280 / 112
Регистрация: 28.04.2015
Сообщений: 1,726
|
||||||
| 26.12.2020, 16:44 [ТС] | ||||||
|
что бы недопустимть UB, нужно:
- либо просто запретить второй вызов delete - либо сделать так, что бы второй вызов delete не приводил к смерти объекта
1. твой пример на указателе, я же работаю со статическими экземплярами класса и оператор дилит скрыт в деструкторе 2. ты жестко обнуляешь в конкретном месте программы птр, а при тесте это могут вбить в любом месте прогги короче, я пока оставляю деструктор как есть я вообще уже имею трактовку, что речь идет про разделяемую память между векторами и намекают на деструктор. Т е намек делается на то, что у каждого вектора дб свой участок памяти, а не общий и чтобы при вызове деструктора для одного объекта остальные объекты не разрушались
0
|
||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 26.12.2020, 16:50 | ||
|
Обнуление можете оставить, чтобы удовлетворить требования преподавателя. Но вы должны понимать, что в реальной ситуации делать обнуление не требуется.
0
|
||
|
383 / 280 / 112
Регистрация: 28.04.2015
Сообщений: 1,726
|
|
| 26.12.2020, 16:52 [ТС] | |
|
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 26.12.2020, 16:57 | ||
|
0
|
||
|
383 / 280 / 112
Регистрация: 28.04.2015
Сообщений: 1,726
|
||
| 26.12.2020, 16:59 [ТС] | ||
|
дословно я не помню
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 26.12.2020, 17:04 | |
|
FasterHarder, эта рекомендация касается объектов, время жизни которых еще не закончено, но логически они уже не используются. После выполнения деструктора время жизни всех полей заканчивается: их больше не существует и совершенно не важно какое у них значение, потому любое обращение несуществующему объекту приводит к UB.
Рекомендации Макконела - это очень хорошо, но если вы не можете различить ситуации, когда они применимы, а когда нет, то толку от них немного.
0
|
|
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
| 26.12.2020, 17:23 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||
| 26.12.2020, 17:42 | ||||
|
категория доступа через this - всегда lvalue. Добавлено через 3 минуты
0
|
||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||||
| 26.12.2020, 18:02 | ||||||||||
|
потому что ты использовал волшебную фразу: мы оперируем указателем. и при этом нет возможности реализовать защиту от дурака. прочитав Макконелла, ты должен был понять, что защиту нужно делать только от ничайных ошибок. от откровенных вредителей, и от дэбилов делать защиту бесполезно. например, один альтернативно одаренный человек решил запускать методы по нулевому указателю. он - художник, он так видит. как ты сможешь защить код от такого дэбила?
"намеки" - это к гадалкам, к бабкам на лавочке, ну или просто к женщинам. они любят намеки. в программировании намёкам места нет. если что-то не понятно - уточняй сабж у руководства.
0
|
||||||||||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
| 26.12.2020, 18:06 | |
|
1
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 26.12.2020, 18:22 | |||||||
|
спасибо, что указал мне на мою ошибку. странно, я вроде бы знаком с теорией. https://rextester.com/QCYR71969 но все равно, уже не в первый раз наступаю на эти же грабли. в голове почему то прочно засела мысль, что this - не_изменяемый указатель. хотя на самом деле this вообще, строго говоря, указателем не является. это - выражение. что-то наподобие такого:
0
|
|||||||
|
Комп_Оратор)
|
||||||||
| 26.12.2020, 21:34 | ||||||||
![]() 0x10, спасибо))) Я давно хочу написать короткое эссе о прикладом математизме в предметной области. Я постоянно пишу об этом, но как сказал поэт:
Ибо сказано: I am - Pointer! Историю о ссылках и категориях значений от времен https://en.cppreference.com/w/... e_category Размывание границ первоначально очерченных абстракции - путь из знания в религию. Часто можно видеть, как молодой послушник получив очередное наставление с сакральным знанием, в экстазе восклицает
От себя добавлю:
this как и много другое, в зависимости от контекста, это- английское слово - ключевое слово языка - выражение имеющее категорию значения - программный объект имеющий тип Вот ещё ссылка https://www.ibm.com/support/kn... plr035.htm в частности
Хотелось бы добавить, что в моей коротенькой фразе Сказанное мною, - сказано не в обиду, а скорее от избытка чувств) Поздравляю, всех вас с наступающим Новым Годом, братия во крестах!!!
0
|
||||||||
| 26.12.2020, 21:34 | |
|
Вызов деструктора
Вызов деструктора Вызов деструктора Вызов деструктора Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
|
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
|
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения.
https:/ / habr. com/ ru/ sandbox/ 295048/
начало и оглавление
-
Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|