在我的项目中,我使用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++的主要原因。

10-05 17:43