Как освободить память, когда окно Qt закрывается? - PullRequest
1 голос
/ 23 марта 2009

В настоящее время я создаю программу на 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), когда новое окно закрыто?

Ответы [ 2 ]

8 голосов
/ 23 марта 2009

Вы можете сделать это, например, ваш closeEvent () . В качестве альтернативы, если вы используете Qt :: WA_DeleteOnClose для своих атрибутов виджета , виджет будет удален после его закрытия, что означает, что вы можете поместить некоторые процедуры очистки в деструктор.

1 голос
/ 23 марта 2009

Рассмотрите возможность использования умных указателей RAII и , и вам не нужно будет помнить, когда следует освобождать выделенную память.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...