删除mat int函数(opencv)

时间:2015-08-06 13:33:38

标签: c++ opencv

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

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

结果会被正确删除吗?

1 个答案:

答案 0 :(得分:4)

除非Mat本身泄露内存,或add做了一些真正可怕的事情,否则没关系。函数将返回Mat实例,调用者可以使用该实例,而无需担心调用delete& c。

对于函数本身,一个好的编译器 elide Mat的值副本,从概念上讲,由于return result会创建它。

使用C ++ 11,您甚至可以明确地提供移动构造函数 Mat(Mat&&),这有助于防止不必要的值副本被删除。