|
383 / 280 / 112
Регистрация: 28.04.2015
Сообщений: 1,726
|
|||||||||||
Повторный вызов деструктора26.12.2020, 08:41. Показов 5586. Ответов 67
Привет!
Есть класс TVector и есть у него деструктор вот такой:
"надо корректно обрабатывать ситуацию повторного вызова деструктора. В этом случае деструктор не должен пытаться освобождать в динамической памяти объекты повторно" я не оч.выкупил, что требуется, но решил добавить такую проверку в деструкторе:
0
|
|||||||||||
| 26.12.2020, 08:41 | |
|
Ответы с готовыми решениями:
67
Повторный вызов деструктора
Повторный вызов деструктора для объекта |
|
383 / 280 / 112
Регистрация: 28.04.2015
Сообщений: 1,726
|
||
| 26.12.2020, 12:50 [ТС] | ||
|
хотя ладно, тут даже нечего обсуждать, пусть будет по-твоему - не принципиально Хотелось бы получить окончательное резюме и закрыть тему. Но как я понимаю, что все норм было изначально. Наверное) а что задание. Соорудить класс одномерный массив и перегрузить его по максимуму + все возможные конструкторы и все.
0
|
||
|
Комп_Оратор)
|
||
| 26.12.2020, 12:52 | ||
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 26.12.2020, 12:53 | |
|
0
|
|
|
383 / 280 / 112
Регистрация: 28.04.2015
Сообщений: 1,726
|
||
| 26.12.2020, 12:54 [ТС] | ||
|
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 26.12.2020, 12:55 | ||
|
0
|
||
|
Комп_Оратор)
|
||||
| 26.12.2020, 13:06 | ||||
|
Добавлено через 5 минут oleg-m1973, чтобы мы не говорили о "разных" объектах в одной памяти но мысль 0x10, мне хочется проверить. Представь что вручную вызван деструктор, а плейсмент нью кинул экзепшн. При выходе из области будет повторный вызов деструктора или нет? Если гарантировано, - нет, то мы тут правы и защита не нужна. А если не гарантировано? Тогда всё плохо кончится.
0
|
||||
|
383 / 280 / 112
Регистрация: 28.04.2015
Сообщений: 1,726
|
|
| 26.12.2020, 13:08 [ТС] | |
|
0
|
|
|
383 / 280 / 112
Регистрация: 28.04.2015
Сообщений: 1,726
|
||
| 26.12.2020, 13:10 [ТС] | ||
|
программка должна все обрабатывать на исключениях. Я не стал говорить это сразу, т к не посчитал это нужным)
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||
| 26.12.2020, 13:19 | |||
|
Добавлено через 6 минут
0
|
|||
|
Комп_Оратор)
|
|||||||
| 26.12.2020, 13:19 | |||||||
|
Ещё раз
0
|
|||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 26.12.2020, 13:23 | |
|
0
|
|
|
Комп_Оратор)
|
||
| 26.12.2020, 13:23 | ||
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 26.12.2020, 13:33 | ||
|
Вернее, защита от идиотов слишком дорого стоит
Добавлено через 4 минуты Добавлено через 4 минуты С таким же успехом можно делать защиту от двойного вызова конструктора. Это ж не си-шарп, здесь можно много всякой хрени сделать. Но можно и не делать.
0
|
||
|
19506 / 10109 / 2463
Регистрация: 30.01.2014
Сообщений: 17,833
|
||||
| 26.12.2020, 14:01 | ||||
|
Добавлено через 3 минуты Добавлено через 2 минуты
0
|
||||
|
383 / 280 / 112
Регистрация: 28.04.2015
Сообщений: 1,726
|
||
| 26.12.2020, 14:03 [ТС] | ||
|
поскольку деструктор вызывается АВТОМАТИЧЕСКИ, то вручную никак + мне еще раньше пояснил один спец, что даже при перегрузке операции присваивания деструктор вручную не вызывается ответ: получается вручную НИГДЕ не планирую. А разве надо?)
0
|
||
|
19506 / 10109 / 2463
Регистрация: 30.01.2014
Сообщений: 17,833
|
||||||||
| 26.12.2020, 14:16 | ||||||||
|
Если мы пишем такой код, то мы должны гарантировать, что исключений в конструкторе, который вызовется при выполнении placement new не будет. Если же этого не гарантировать, то код будет содержать UB, а защита обнулением внутри деструктора от этого не спасет (UB от этого не исчезнет). Добавлено через 7 минут И тогда получается, что если вручную вызывать не надо, то в вашем деструкторе часть операций лишняя. Т.е. достаточно так:
2) Вы можете обнулить поля, после вызова delete[], но в программе не может быть корректной ситуации, когда это обнуление сыграет какую-либо роль. Да, при вызове placement new и генерации исключения в нем, и если внутри конструктора не успели еще задать для data какое-то отличное от NULL значение, то в деструкторе, при наличии обнуленного заранее data, вы не упадете, но это не решит проблему, а только замаскирует ее. Если в программе есть проблема, но программа никак об этом не сообщает, то это очень плохо.
0
|
||||||||
|
383 / 280 / 112
Регистрация: 28.04.2015
Сообщений: 1,726
|
|
| 26.12.2020, 14:20 [ТС] | |
|
DrOffset, а по самому стартовому вопросу в сообщении №1 можете что-то дополнить ключевое?
на данный момент получается, что то требование (СИНИМ выделено в 1 сообщении) является бессмысленным? или все-таки нет?
0
|
|
|
19506 / 10109 / 2463
Регистрация: 30.01.2014
Сообщений: 17,833
|
|||
| 26.12.2020, 14:26 | |||
|
надо корректно обрабатывать ситуацию повторного вызова деструктора. В этом случае программа должна быть написана так, чтобы исключить повторный вызов деструктора Если же ваш преподаватель (или кто это задание дал) имел в виду именно первоначальную формулировку, то ему, наверное, стоит подучить С++. Вы, естественно, не сможете никак на это повлиять, и вам придется оставить ваш вариант и сдать ему. Но в голове вы должны держать, что все это сделано только ради оценки, а вы должны потом пойти и разобраться как нужно было делать правильно.
0
|
|||
|
383 / 280 / 112
Регистрация: 28.04.2015
Сообщений: 1,726
|
||
| 26.12.2020, 14:38 [ТС] | ||
|
пример: this->.~TClass(); this->.~TClass(); можно продолжить при желании и даже зациклить) как можно ЭТО исключить?
0
|
||
| 26.12.2020, 14:38 | |
|
Вызов деструктора
Вызов деструктора Вызов деструктора Вызов деструктора Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|