Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

Есть агрегированные классы. Назовём их 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 в 14:23.
taras-proger77 вне форума   Ответить с цитированием
Старый 11.05.2019, 13:38   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,891
Репутация: 2668
По умолчанию

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

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

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

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

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

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

icq: 512-765
skype: alexp.frl
По умолчанию

Цитата:
Сообщение от taras-proger77 Посмотреть сообщение
Все 19446?
http://sscce.org/
Alex11223 вне форума   Ответить с цитированием
Старый 11.05.2019, 17:00   #7
taras-proger77
Форумчанин
 
Регистрация: 17.12.2018
Сообщений: 419
Репутация: -121
По умолчанию

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

icq: 512-765
skype: alexp.frl
По умолчанию

Вы о чем?
Alex11223 вне форума   Ответить с цитированием
Старый 11.05.2019, 18:26   #9
taras-proger77
Форумчанин
 
Регистрация: 17.12.2018
Сообщений: 419
Репутация: -121
По умолчанию

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

icq: 512-765
skype: alexp.frl
По умолчанию

И причем тут список языков?
Вы по ссылке ходили, читали?
Alex11223 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не вызывается функция 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


11:32.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.