删除Mat int函数(opencv)

delete Mat int function (opencv)

本文关键字:opencv 函数 Mat int 删除      更新时间:2023-10-16

如果我创建一个函数,例如:

Mat func(const Mat& x, const Mat& y)
{
   Mat result;
   add(x,y,result);
   return result;
}

result会被正确删除吗?

除非Mat本身泄漏内存,或者add做了一些非常可怕的事情,否则它是好的。函数将返回一个Mat实例,调用者可以使用该实例,而不必担心调用delete &c。

对于函数本身,一个好的编译器会省略 Mat的值副本,从概念上讲,否则return result会创建这个值副本。

在c++ 11中,您甚至可以显式地提供move构造函数 Mat(Mat&&),这有助于防止获取不必要的值副本。