При закрытии приложения память освобождается. Если нужно раньше удалить виджет, то используй delete.
Ну както Вы не правильно рассуждаете...
Память освобождать / объекты удалять надо всегда там где надо.
Для QObject и порождённых от него классов (точнее их объектов) если у объекта есть parent то этот объект уничтожается при уничтожении parent-а. Поэтому достаточно удалить parent или parent parent-а и т.д.
Если parent нулевой и объект создан на куче, то объект надо удалять. Если объект создан на стеке, то он сам удалится при выходе из "блока"/функции.
Для виджетов есть флаг Qt::WA_DeleteOnClose, позволяющий не заботиться (точнее заранее позаботиться) об удалении окна при его закрытии (В основном используется для топ-левел-виджетов).