Я построил приложение, используя Qt. Он включает в себя некоторые экраны, а некоторые из них распределяются динамически. Я думаю, будет ли delete
динамически выделенных объектов на onBackButton() или просто в деструкторах их создателей.Вызов деструктора на кнопку «Назад» или при закрытии приложения?
Вот вещь:
Если они удалены в onBackButton(), это сохранит память, потому что, пока экран не отображается, не будет использоваться память. Но это означает, что если мы закрываем приложение, пока мы находимся на одном из этих экранов, память не будет освобождена.
С другой стороны, если мы удалим их по деструкторам их создателей, память будет освобождена, когда приложение будет существовать. Но память по-прежнему будет использоваться, даже если мы не на этом экране (если мы войдем в такой экран, а затем отжали назад, память все равно будет использоваться).
И, конечно же, мы не можем delete
в обоих местах. Это вызовет исключения.
Я пошел с первым вариантом, потому что единственный способ «закрыть (существовать)» - это приложение, физически нажатие кнопки питания на устройстве, - которое отключит устройство. Так что никакого вреда не было - в следующий раз, когда мы включим устройство, все будет хорошо.
Является ли мой подход правильным или есть что-то лучшее, что я могу сделать?
Я думаю, он говорит о том, где можно вызвать функцию delete или deleteLater(). Поэтому не имеет значения, как он удаляет объект. Поскольку следующий раз, скорее всего, произойдет после цикла текущего события. –