Насколько я мог проверить, нет утечки в v2.3.1 для Linux.
Вот что происходит: изображение выделяется cvQueryFrame()
, когда эта функция вызывается в первый раз, а затем это изображение повторно используется при всех последующих вызовах cvQueryFrame()
. Новые изображения не создаются после первого вызова, и изображение освобождается только при cvReleaseCapture()
.
Итак, вы видите, если вы испытываете утечку памяти (как вы ее точно нашли) и сбой, это, скорее всего, вызвано какой-то другой частью вашего кода. Если sendImage()
не синхронизирован (то есть неблокируется), передача main
напрямую может вызвать проблемы. Я не знаю, что вы делаете в этой функции, поэтому я предполагаю, что проблема в ней.
Один тест, который вы можете сделать, это скопировать кадр main
, а затем вместо этого передать эту копию в sendImage()
, а затем отпустить ее, когда она вам больше не нужна.