请教一个关于C++内存泄漏的问题(有关Opencv的使用)
最近在写一个小项目用到了Opencv这个库。但是造成了大量的内存泄漏。我应该是找到了内存泄漏的原因,但是不知道如何去解决,请大神们帮帮忙!!! 这个小项目是利用Opencv这个库来打开摄像头,处理摄像头所捕捉到的画面。
代码大致如下:
//全局变量
VideoCapture VCap;
Mat MCurrentFrame;
IplImage* pFrame = NULL;
IplImage* pFrameHSV = NULL;
//打开摄像头
while(true){
VCap.read(MCurrentFrame);
pFrame = &IplImage(MCurrentFrame);//将当前画面保存到pFrame中
::PostMessage(T->m_hWnd, WM_MY_SHOW, NULL, 1);//发消息,在响应此消息时将pFrame所指向的图像显示在界面中
cvCvtColor(pFrame, pFrameHSV, CV_BGR2YCrCb);//色彩空间转换
//然后开始处理pFrameHSV,主要是利用codeBook模型来区分出前景
}
我知道大概是因为在 pFrame = &IplImage(MCurrentFrame);这句代码之前我没有将pFrame之前所指向的内存回收,cvCvtColor(pFrame, pFrameHSV, CV_BGR2YCrCb);也是同样的情况吧。
可是当我在 pFrame = &IplImage(MCurrentFrame);前加上if(pFrame!=NULL){delete pFrame;}时会在delete pFrame这句中断,当把delete pFrame换成cvReleaseImage(&pFrame);时,又会将pFrame这个指针本身连同其指向的内容一起删除掉,执行pFrame = &IplImage(MCurrentFrame);又说找不到pFrame这个指针了。。。
在看了很多东西后仍然无果,只好让大神告诉我到底该怎么做了。先谢谢各位大神了。