Как освободить память при закрытии окна Qt?
-
21-08-2019 - |
Вопрос
В настоящее время я создаю программу на Qt, OpenCv, Mac os X.У меня есть главное окно, а затем открывается отдельное окно.Передаю новому окну несколько клонов матрицы в конструкторе:
ImageWindow *imageWin = new ImageWindow(
cvCloneMat(getData->getMasterRawMat(1)),
cvCloneMat(getData->getMasterRawMat(2)),
cvCloneMat(getData->getMasterRawMat(3)),
cvCloneMat(getData->getMasterRawMat(4)) );
imageWin->show();
Как мне освободить место (где мне вызвать cvReleaseMat), когда новое окно закрыто?
Решение
Вы можете сделать это, например.твой closeEvent().Альтернативно, если вы используете Qt::WA_DeleteOnClose для тебя атрибуты виджета, виджет будет удален при его закрытии, а это означает, что вы можете поместить некоторые процедуры очистки в деструктор.
Другие советы
Рассмотрите возможность использования Идиома RAII и умные указатели и вам не нужно будет помнить, когда освободить выделенную память.
Не связан с StackOverflow