我在释放存储在 stl 容器中的 opencv 图像时遇到问题。我正在开发一个系统来保存相机的最后几帧。我需要一个容器来存储图像。但是当我尝试使用迭代器访问图像并释放它们时,事情就出错了。像这样。
deque<IplImage> ImageQue;
IplImage * temp=cvCreateImage(cvSize(30, 30), 8, 3);
ImageQue.push_back(*temp);
deque<IplImage>::iterator it=ImageQue.begin();
//temp and temp2 pointing different mem
IplImage * temp2=&*it;
//this goes wrong. execption at memory location.
cvReleaseImage(&temp2);
如果我试试这个。
IplImage * try1=cvCreateImage(cvSize(30, 30), 8, 3);
//try1 and try2 are pointing the same mem.
IplImage * try2=&*try1;
//things alright here.
cvReleaseImage(&try2);
我认为问题就在这里。双端队列::迭代器它=ImageQue.begin(); IplImage * temp2=&*it;
对此有任何想法吗?或建议我是否想在 stl 容器中发布图像?