Утечка памяти при использовании cvCopy - PullRequest
0 голосов
/ 01 апреля 2011

У меня проблема с утечкой памяти при использовании функции cvCopy в OpenCV. Если я прокомментирую эту строку, все в порядке. Если нет, память увеличивается до тех пор, пока система не выйдет из строя ..

Я нашел эту интересную статью об утечках памяти OpenCV: http://www.andol.info/hci/963.htm, но если я прокомментирую строку: targetImage = cvCreateImage( ....

У меня другая проблема, потому что она говорит, что я передаю нулевой указатель.

..... //other code (here we are inside a loop
cvSetImageROI(&tmpimag,TargetRect);
targetImage = cvCreateImage( cvSize(TargetRect.width, TargetRect.height), tmpimag.depth, tmpimag.nChannels );
cvCopy(&tmpimag,targetImage);
cvResetImageROI(&tmpimag); // release image ROI 
....//other code

Ответы [ 2 ]

3 голосов
/ 01 апреля 2011

Насколько я могу судить по вашему маленькому фрагменту кода, утечка памяти mem может быть вашей ошибкой.

На каждой итерации цикла вы создаете / выделяете новое изображение с помощью cvCreateImage(), ноЯ не вижу, чтобы вы выпустили его (отметьте cvReleaseImage()).Поэтому после каждой итерации все больше и больше памяти выделяется, генерируя подлинную утечку памяти.

EDIT :

cvResetImageROI(&tmpimag); не освобождает изображение , он просто сбрасывает ранее установленную информацию о ROI.Вам все еще нужно cvReleaseImage(&tmpimag).

0 голосов
/ 01 апреля 2011

вы выпускаете targetImage каждый раз, когда цикл повторяется?

...