Я работаю над довольно стандартным мобильным приложением Qt (написанным на C ++ и предназначенным для устройств на Symbian), и обнаруживаю, что иногда, когда приложение закрывается (например, через вызов QApplication :: quit), последний деструкторв приложении может занять много времени, чтобы вернуться (30 секунд плюс).Под этим я подразумеваю, что все операции очистки в деструкторе завершены (быстро, все хорошо в течение секунды), и мы достигли точки, когда выполнение покидает деструктор и возвращается к коду, который неявно вызывал его (т.е. когда мы удаляемобъект).
Очевидно, что в этот момент я ожидаю, что выполнение вернется сразу после вызова, чтобы удалить объект, практически мгновенно, но, как я говорю, иногда это занимает много времени!
Это длительное время закрытия происходит как в отладочной, так и в выпускной сборках, с включенным или отключенным ведением журналов, поэтому я не думаю, что это здесь фактор.Когда мы дойдем до конца деструктора, я почти уверен, что ни один файловый дескриптор не останется открытым или какие-либо другие открытые ресурсы (сетевые подключения и т. Д.) ... хотя, даже если они, конечно, это не будет представлять собой проблему навыход из деструктора (?).
Это при удалении объекта приложения QMainWindow.В настоящее время вызов для этого находится в слоте, подключенном к QApplication :: aboutToQuit, хотя я также пытался удалить этот объект в «основной» функции приложения.
Длительность задержки, которую мы испытываем, кажется пропорциональнойколичество активности в приложении, прежде чем мы выйдем.Это заставляет меня думать, что утечки памяти могут быть проблемой здесь, однако мы не знаем ни о чем (не значит, что не , конечно), а также я никогда не видел этогоповедение раньше с утечкой памяти.
Кто-нибудь есть идеи, что здесь может происходить?
Приветствия