#c #opencv #memory-leaks
#c #opencv #утечки памяти
Вопрос:
Я почти закончил свой проект OpenCV, и я думаю, что обнаружил утечку памяти в cv :: VideoCapture.
Я сокращаю код до следующего минимального примера, и после 1000 итераций процесс увеличивается примерно до 40 МБ. Если я делаю снимки, это еще больше, но чтобы сохранить простую демонстрацию, я просто открываю камеру и закрываю ее.
cv::VideoCapture cap;
int temp_counter=0;
while(true)
{
cap.open(0);
cap.release();
temp_counter ;
std::cout << " Nr. " << temp_counter << 'n';
}
Я искал и тестировал часами, но безрезультатно.
У кого-нибудь есть какие-либо предложения о том, где может быть проблема?
Редактировать:
Я использую 2.4.9 и протестировал его на 32-битной Win7 с камерами logitech c920 и на 32-битном нетбуке Win8 со встроенной веб-камерой, и на обеих системах память программы увеличивается до тех пор, пока она не выйдет из строя примерно после 3000-5000 итераций. следующий шаг — протестировать ее с помощью vanguard
Комментарии:
1. Поскольку здесь этого не происходит, я готов поспорить, что это ошибка в драйвере вашей видеокамеры или в зависящих от платформы частях opencv. Вы пробовали стандартный профилировщик утечки памяти, такой как
valgrind
?2. пожалуйста, добавьте версию opencv / os (кстати, не удалось воспроизвести на 2.4.9 / xp)
3. Я смог воспроизвести утечку в OS X Mavericks с версией 2.4.9. Похоже, что она происходит из кода, зависящего от платформы, поэтому причина может быть другой.