在我的项目中,我使用CvPoint2D64f *函数手动存储棋盘图像的角落。现在由于未释放内存而出现内存泄漏错误。我尝试了free(Corners)和
delete [] Corners。但是11小时后,它仍然出现相同的内存泄漏错误。我感到困惑。哪种方法是释放内存的正确方法?
int main()
{
CvPoint2D64f* Corners = 0;
Corners = new CvPoint2D64f[25];
......
free(Corners);
return;
}
我用过opencv 2.1的c库
提前致谢..
最佳答案
如果希望它是“C”,则不能使用“new”,这必须是:
Corners = (CvPoint2D64f*) malloc(25 * sizeof(CvPoint2D64f));
...
free(Corners);
但老实说,您的问题是由于使用了过时的版本(2.1)和过时的api(c)
这些手动内存管理问题是opencv开发人员切换到c++的主要原因。