关于指针的使用还是理解的不够透彻
m_prsltimg1存放的是已经读取完的第一幅图像的数据,在显示的时候,为了统一,我将其用以下赋值的方式赋值给m_pshowimg,
pDoc->m_pshowimg=pDoc->m_prsltimg1 ;
然后再由
cRect.SetRect(0 , 0 , pDoc->m_pshowimg->width , pDoc->m_pshowimg->height);
HDC hDC = arg_pDC ->GetSafeHdc();
pDoc->m_vvshowimg.DrawToHDC(hDC,&cRect);
将图像显示。
但是这样在析构的时候就比较麻烦了,因为利用等号将指针赋值,实际上将m_prsltimg1的地址也给了m_pshowimg,这样在析构时
cvReleaseImage(&m_pimg1);
cvReleaseImage(&m_pshowimg1);
不论先释放谁,后释放的指针指向的地址已经不存在。会报错。
解决办法是new一下m_pshowimg,让两个指针指向不同的地址,但是内容相同。
不知道理解的是否正确。
另外,opencv的释放数据的方式为:
IplImage *m_pimg1;
CvvImage m_vvimg1;
cvReleaseImage(&m_pimg1);
m_vvimg1.Destroy();