我非常关心项目中的内存。由于内存泄漏,它之前崩溃过。 我正在考虑两种方法:
- 在主项目部分只声明一次不同的 IplImages。
- 每次我需要声明 IplImage 时立即声明,并在我不再需要它时释放它。
假设我有一个实时项目,因此 IplImages 总是被覆盖以生成新的,并使用以下行进行声明/发布:
IplImage*image=cvCreateImage(cvSize(640, 480), IPL_DEPTH_8U, 1);
cvReleaseImage(&image);
优化内存使用的最佳方法是什么?
最佳答案
您也可以有一个 IplImage 指针,然后每次使用 cvCreateImageHeader 填充标题,使用 cvSetData 填充缓冲区中的图像数据。最后你可以使用 cvReleaseImageHeader 来释放它。
IplImage *m_img_show = NULL;
CvSize cv_img_size = cvSize(m_width,m_height);
m_img_show = cvCreateImageHeader(cv_img_size, IPL_DEPTH_8U,3);
每次都使用它来填充来自 m_pBuffer 的图像。
cvSetData(m_img_show, m_pBuffer, m_width*3);
最后释放头部和图像数据缓冲区
cvReleaseImageHeader(&m_img_show);
关于c++ - 关于声明/释放 IplImages 的两种情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16563151/