首页 文章

OpenCV Mat中的动态内存释放错误

提问于
浏览
0

我想知道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 回答

  • 2

    这是否意味着在我的计划结束时发生的解除分配是正确的 . 那是对的吗?

    cv::Mat 自己分配内存并在共享相同数据的所有 cv::Mat 超出范围时释放它(类似于 std::shared_ptr ) .

    我想证实我先前的疑问 . 如果确实如此,那么每次声明Mat都必须初始化它是非常不方便的

    不,这不对 . 但是,由于您没有显示代码,我可以猜测您没有正确地将OpenCV链接到您的项目,因为一个非常好的链接OpenCV在 cv::Mat 破坏阶段会导致错误 .

相关问题