Мне удалось обнаружить утечки памяти с помощью cv::VideoCapture
и NSAutoreleasePool
.Все проблемы в modules/highgui/src/cap_qtkit.mm
.
Я нашел около 3 примеров следующего:
- Выделено
NSAutoreleasePool
. - Метод завершен рано(этот код очень свободно использует ранние возвраты из функций)
- Некоторые из этих возвратов не очищаются после использования ранних
return
Так что исправление для каждоговхождение [[NSAutoreleasePool alloc] init]
, проверьте остаток функции для return
.Если нет оператора, аналогичного [localpool drain]
(или какому-либо имени переменной, использовавшемуся в alloc) непосредственно перед return
, добавьте еще один.
Есть еще 2 исходных файла.в highgui, использующем NSAutoreleasePool
, у которого могут быть похожие проблемы, но я их не использую и не проверял.
Как только я исправил эту проблему, утечки памяти исчезли.Я снова использую OpenCV 2.4.2.