Я создаю визуальную панель, которая соответствует одному большому (IplImage *), по которому метод выполняет итерацию для размещения в относительных позициях обновлений графика.
это выглядит так
в коде на каждой итерации эти «заполнители» / «слоты» обновляются соответствующим графическим изображением (из объекта построения, который создает изображение) в соответствующей позиции (позиции создаются и помещаются в карту относительно количества графов Я замышляю)
Причина, по которой я не выполняю непосредственное отображение на панели, заключается в том, что я сконструировал эту панель так, чтобы она принимала и отображала любой IplImage для помещения в «слот», что я и сделаю позже.
Я знаю, что IplImages устарел и ужасен в управлении памятью, если не правильно выпущен, однако я использую библиотеку, которая использует старый opencv, поэтому для удобства всего (потому что я пытался преобразовать все в Mat, но это усложняет вещи больше), я продолжаю с IplImages
Я нашел, где что-то пошло не так, и вот оно:
void RsPanel::updateComponents()
{
for (int i = 0; i < totalspots; i++) {
CvRect rectangle = cvRect(positionMap[i].x, positionMap[i].y, slotSize.width, slotSize.height);
cvSetImageROI(window, rectangle);
img = slots[i].getImage();
cvCopy(img, window);
cvResetImageROI(window);
}cvShowImage(name, window);
точнее здесь:
img = slots[i].getImage();
из того, что я понимаю, утечка памяти возникает из-за того, что предыдущий «img» не был выпущен должным образом, однако, когда я использую cvReleaseImage для освобождения, все просто вылетает (потому что из того, что я понимаю, это нужно сделать после того, как я закончу с использованием образа ,
Я попытался выпустить «img» и cvCloneImage-один из слота (slots [i] -> getImage ()), однако это дает мне ту же проблему с памятью
без освобождения, в течение минуты, программа накапливает до 1.7 ГБ ОЗУ и выдает сообщение об ошибке памяти.
То, как я это делаю, я полагаю, не самое эффективное, но моя борьба с управлением памятью (исходя из опыта Java) все еще нуждается в их обучающих моментах.
Любые советы, чтобы подойти к этому?
Заранее спасибо!
Задача ещё не решена.
Других решений пока нет …