我想知道OpenCV Mat默认构造函数是否已经分配了内存?如文件中所示
> These are various constructors that form a matrix. As noted in the Automatic Allocation of the Output Data, often the default constructor
> is enough, and the proper matrix will be allocated by an OpenCV
> function.
这是否意味着在我的程序结束时发生的解除分配是正确的 . 那是对的吗?
实际上,我在程序结束时的内存释放阶段遇到(核心转储)错误 . 我的初始代码引入了一个OpenCV Mat,即Mat A而没有初始化它会产生错误 . 我通过使用初始化来修复此错误,即A = Mat :: zeros(...)
我想证实我先前的疑问 . 如果确实如此,那么每次声明Mat都必须初始化它是非常不方便的
对不起我的错误解释!如果我不够清楚,请回复我
1 回答
cv::Mat
自己分配内存并在共享相同数据的所有cv::Mat
超出范围时释放它(类似于std::shared_ptr
) .不,这不对 . 但是,由于您没有显示代码,我可以猜测您没有正确地将OpenCV链接到您的项目,因为一个非常好的链接OpenCV在
cv::Mat
破坏阶段会导致错误 .