|
383 / 280 / 112
Регистрация: 28.04.2015
Сообщений: 1,726
|
|||||||||||
Повторный вызов деструктора26.12.2020, 08:41. Показов 5478. Ответов 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
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||
| 26.12.2020, 14:01 | ||||
|
Добавлено через 3 минуты Добавлено через 2 минуты
0
|
||||
|
383 / 280 / 112
Регистрация: 28.04.2015
Сообщений: 1,726
|
||
| 26.12.2020, 14:03 [ТС] | ||
|
поскольку деструктор вызывается АВТОМАТИЧЕСКИ, то вручную никак + мне еще раньше пояснил один спец, что даже при перегрузке операции присваивания деструктор вручную не вызывается ответ: получается вручную НИГДЕ не планирую. А разве надо?)
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||||||
| 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
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 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 | |
|
Вызов деструктора
Вызов деструктора Вызов деструктора Вызов деструктора Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сукцессия 20. Война автоботов. Делаем ставки. Лёд против "пш-пш!".
anaschu 11.07.2026
Битва ИИ в ризосфере: Как мы скрестили жесткие ОДУ, закон Фика и «подземный шантаж»
Уважаемые коллеги!
Хочу поделиться уникальным опытом ведения междисциплинарной компьютерной разработки. Прямо. . .
|
Сукцессия 19. Какие выводы я сделал из модели? Часть 2.Внутримикоризный стехиометрический буфер и хроно-дискретные зоны экспансии
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы
Математический аппарат моделирования
|
Сукцессия 18. Какие выводы я сделал из войны грибов с деревьями? Часть 1- рассказ и немного про термины
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы
Математический аппарат моделирования
Система ОДУ описывает динамику изменения массы различных компонентов системы во времени. Ключевой. . .
|
Просветление в 5 секунд
kumehtar 10.07.2026
Андрей Веретенников выдал фразу недавно: "Вам не обязательно кем-то себя считать"
|
|
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
|
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
|
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|