Вопрос

В настоящее время я создаю программу на 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 и умные указатели и вам не нужно будет помнить, когда освободить выделенную память.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top