2014-03-18 140 views
0

我知道Mat a = b只是将b的引用复制到a中,没有单独的内存分配。在OpenCV中Mat结构的内存分配

但在下面的代码:

VideoCapture cap(0); 
Mat frame; 

for(i = 0; i<10; i++) 
    cap.read(frame); 

在每次迭代中,垫变量被更新。那么这是否意味着每个循环都会分配新的内存。如果是这样,之前分配的内存会发生什么?它是否被摧毁?在10次迭代结束时,系统中使用的内存等于10 * sizeof(Mat),还是每次更新A时,分配给Mat框架的内存被覆盖?

回答

2

在这种情况下,VideoCapture更新了frame并且没有创建新副本Mat。每次迭代都会覆盖Mat