关于OpenCV中的内存管理

时间:2013-08-01 17:21:17

标签: c opencv memory-management iplimage

如果这看起来像个愚蠢的问题,我很抱歉...... 我对OpenCV中的cvLoadImage有疑问:

IplImage *frame;
for (unsigned int i = 0; i < LENGTH; i++)
{
    frame = cvLoadImage(filename.c_str());  
    // do something...
}

对于cvLoadImage的每次调用,是否存储在内存中的新IplImage?在覆盖后从堆释放的frame指向的旧变量是什么?

此外,当我尝试发布如下图像时......

IplImage *frame;
for (unsigned int i = 0; i < LENGTH; i++)
{
    if (frame != NULL)
        cvReleaseImage(&frame);

    frame = cvLoadImage(filename.c_str());  
    // do something...
}

为什么这个解决方案不起作用(内存访问不良)? 最好的问候,Vi。

1 个答案:

答案 0 :(得分:2)

是的,由cvLoadImage分配的内存。出现错误是因为您没有在开始时初始化帧。它必须初始化为零或NULL。