Название: QT/C++ memory management Отправлено: qtUser от Июнь 06, 2014, 14:27 Я правильно понимаю, что если в приложение QT все классы являются наследниками QObject, а все объекты имеют назначенного родителя и образуют дерево, то думать об удаление объектов в QT вообще не надо?
Если да, есть ли что-то похожее в стандартном C++ (паттерны или еще какие идиомы)? Название: Re: QT/C++ memory management Отправлено: Swa от Июнь 06, 2014, 14:42 1. Да
2. Нет Название: Re: QT/C++ memory management Отправлено: kambala от Июнь 06, 2014, 16:34 1. если задашь объекту родителя, то он будет; не задашь — придется удалять руками
Название: Re: QT/C++ memory management Отправлено: Old от Июнь 06, 2014, 18:30 то думать об удаление объектов в QT вообще не надо? Это не совсем так. Думать все равно придется. :)То, что у объекта есть родитель, который его уничтожит при своем разрушении - это конечно замечательно. Но часто бывает так, что этот родитель живет все время работы программы, а значит удалять объекты он будет только в момент завершения программы. Т.е. если вы порождаете объекты и назначаете им родителя, который будет жить все время работы программы, то по сути вы получаете постоянную утечку памяти в процессе работы программы. Название: Re: QT/C++ memory management Отправлено: sergek от Июнь 07, 2014, 11:06 1. если задашь объекту родителя, то он будет; не задашь — придется удалять руками Объект с родителем можно удалять вручную оператором delete?Название: Re: QT/C++ memory management Отправлено: Bepec от Июнь 07, 2014, 12:17 Можно, но при удалении родителя будет исключение :D
Название: Re: QT/C++ memory management Отправлено: Johnik от Июнь 07, 2014, 12:37 Объект с родителем можно удалять вручную оператором delete? Можно, смотрим исходники:qobject.cpp Код
Можно, но при удалении родителя будет исключение :D Какое еще исключение?Название: Re: QT/C++ memory management Отправлено: Bepec от Июнь 07, 2014, 13:08 Johnik - прошу указывайте версию Qt. У меня указана под ником слева, а у вас?
Хотя да, вы правы - такое в исходниках и у меня есть. Теперь осталось мне выяснить, как же я добивался такого результата :) update: видимо у меня были какие то собственные заморочки :) Ну да и ладно. |