Когда динамически распределяются QObjects освобождаются

Моя программа, похоже, не протекает, поэтому мне любопытно. Если я инициализировал подкласс QObject с новым, и я не дал объекту родителя, когда он уничтожается? Кажется, что это идет вразрез со спецификацией C ++, но, возможно, возможно, что мета-компилятор qt делает что-то за кулисами.

Точнее говоря, я использую QThread и использую moveToThread для объекта без родителя (последствия потоков не вынуждают родителей). Похоже, что объект в потоке уничтожается, когда основная программа завершается.

1

Решение

Динамически распределяемые данные без управления временем жизни будут «жить», пока приложение не будет завершено.

Если ваша проблема связана с утечкой рабочих объектов, вы можете позвонить deleteLater() на них, как только их работа закончена, и так как это слот, вы также можете подключить к нему сигналы.

1

Другие решения

Ну, я бы ответил по-другому. Вы не должны рассматривать Qt как магический инструмент, который меняет ваши общие концепции дизайна на C ++. Действительно, он может позаботиться о QObject, которые являются детьми любого другого QObject, и их время жизни ограничено временем жизни родителей. Но в целом разработчик должен решить, когда объекты C ++ были созданы, а затем они умирают. Это правда плохой Практика, чтобы передать факт, что все QObjects умрут когда-нибудь при выходе из приложения. Сложное приложение с большим количеством объектов QOb может испытывать сильное влияние на производительность после заполнения определенного количества объектов QObject.

Отвечая на ваш вопрос, любая современная ОС отбросит все выделенные области определенного процесса, как только он выйдет … но наличие путей в приложении, где вы не управляете созданными объектами, в любом случае приведет к неприятностям.

1

По вопросам рекламы [email protected]