C++ opencv imshow导致内存泄漏(c+;+;)
我编写了这个方法(它显示一个图像): m_图像为Mat类型 我也使用这个析构函数:C++ opencv imshow导致内存泄漏(c+;+;),c++,opencv,memory-leaks,C++,Opencv,Memory Leaks,我编写了这个方法(它显示一个图像): m_图像为Mat类型 我也使用这个析构函数: ImageLoader::~ImageLoader() { m_image.release(); } 然而,Valgrind发现了大量内存泄漏。这是由以下两个cv函数引起的: namedWindow和imshow(因为没有调用displayMyImage()就没有任何泄漏)。 有办法解决吗 谢谢 第一个问题是命名窗口的名称不同: “新窗口1”不同于“新窗口1”。第二,我告诉你我从来没有使用过namedW
ImageLoader::~ImageLoader()
{
m_image.release();
}
然而,Valgrind发现了大量内存泄漏。这是由以下两个cv函数引起的:
namedWindow和imshow(因为没有调用displayMyImage()就没有任何泄漏)。
有办法解决吗
谢谢 第一个问题是命名窗口的名称不同:
“新窗口1”
不同于“新窗口1”
。第二,我告诉你我从来没有使用过namedWindow,你只需要使用imshow在名为“new\u window1”
的图像窗口中显示图像
Remark1:您不必担心显式发布m_image
,这正是Mat的初衷
Remark2:waitKey(0)
永远保持窗口
我以前在这里看到过这个问题,所以我想你也可以在这里搜索答案。它们可能是误报,但我认为你不需要调用
release()
。你确定在收集泄漏之前关闭窗口吗?是的,我确定。它因“waitKey()”而关闭。如果您认为opencv中存在错误,您可以申请以下错误报告,而无需像前面所说的那样明确调用Mat.release()。您可以使用释放为GUI分配的内存
ImageLoader::~ImageLoader()
{
m_image.release();
}