Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2019, 12:26   #1
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию Не вызывается деструктор

Есть агрегированные классы. Назовём их A, B и C.
Код:
class A
{
 ...
};
class B
{
 ...
 A a;
};
class C
{
 ...
 B b;
}
class D
{
 ...
 D c;
 D *p;
 D *n;
}
class E
{
 ...
 D d;
};
По логу видно, что при удалении экземпляра E дестуктор E отработал почти полнотью и упал, деструктор D отработал полностью, деструктор C отработал полностью, потом полностью отработал деструктор B, но деструктор A даже не запустился. В чём может быть проблема? Пока накостылял, заменив деструктор E обычной функций-членом.

Последний раз редактировалось taras-proger77; 11.05.2019 в 13:23.
taras-proger77 вне форума Ответить с цитированием
Старый 11.05.2019, 12:38   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Вы на глазок определили, что не запускался? Или код не тот показываете...
https://ideone.com/7RsMsv
p51x вне форума Ответить с цитированием
Старый 11.05.2019, 14:17   #3
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию

Убрал костыль, проблема не вернулась.
taras-proger77 вне форума Ответить с цитированием
Старый 11.05.2019, 14:17   #4
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Вы на глазок определили, что не запускался?
https://ideone.com/7RsMsv
Вы читать пробовали?
Цитата:
Сообщение от p51x Посмотреть сообщение
Или код не тот показываете...
Все 19446?
Цитата:
Сообщение от p51x Посмотреть сообщение
https://ideone.com/7RsMsv
Вы серьёзно считаете, что я не могу: во-первых дойти до этого сам, а во-вторых самостоятельно написать такой пример и протестить? Или идиотизм по себе намерили? Лог реального проекта показал, что деструктор не вызывается. Причём, если сначала мышкой закрыть связанное окно и прибить сразу C и D, то дестуктор E работал нормально, но фактически лишь убеждался, что ему ничего делать не надо. И в этом случае все деструкторы работали полностью. Скостылял принудительное закрытие всех окно до посылки WM_CLOSE главному окну и пустой дестркртор E, с костылём всё заработало нормально, если главное окно закрывать не крестом, а кнопкой. Потом вернул как было, проблема не вернулась. Помните приколы про то, как Ржевсего в гусарской балладе изолировали потому, что он то Наташу убивал, то сам погибал и про то, как при покраске дома Болконских у Наташи бельё падало? Здесь у Наташи отобрали дневник, она схватила призрачные спицы, отобрабли призрачные спицы, дали нормальные, она стала перед сном делать себе харакири, поставили на входе в спальню тамбур, резаться перестала, вернули простую дверь, про харакири не вспомнила.

Последний раз редактировалось taras-proger77; 11.05.2019 в 14:32.
taras-proger77 вне форума Ответить с цитированием
Старый 11.05.2019, 14:22   #5
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
https://ideone.com/7RsMsv
Вы серьёзно считаете, что я не могу во-первых дойти до этого сам, а во-вторых самостоятельно написать такой пример и протестить? Или идиотизм по себе намерили?

Последний раз редактировалось taras-proger77; 11.05.2019 в 14:31.
taras-proger77 вне форума Ответить с цитированием
Старый 11.05.2019, 14:26   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от taras-proger77 Посмотреть сообщение
Все 19446?
http://sscce.org/
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 11.05.2019, 16:00   #7
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию

И? Я тоже могу список языков накидать.
taras-proger77 вне форума Ответить с цитированием
Старый 11.05.2019, 16:37   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вы о чем?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 11.05.2019, 17:26   #9
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию

О Вашем посте.
taras-proger77 вне форума Ответить с цитированием
Старый 11.05.2019, 17:32   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

И причем тут список языков?
Вы по ссылке ходили, читали?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не вызывается функция KoBaL JavaScript, Ajax 0 15.01.2014 23:24
Почему деструктор вызывается два раза? 220Volt Общие вопросы C/C++ 18 09.01.2014 21:55
Почему вызывается деструктор? MrGukk Общие вопросы C/C++ 13 23.08.2012 17:42
Не вызывается деструктор kineziz Общие вопросы C/C++ 4 18.08.2012 15:54
Не вызывается функция JS Dexes PHP 1 01.02.2012 10:57