我正在使用带有 Qt5.12 的 Ubuntu 20.04 来开发 QT 项目,该项目使用 QVTK 小部件来显示 3D PCL 可视化器。在定义可视化器和 vtk 小部件关系后,我面临内存泄漏问题。头文件内容如下:
class SiLS : public QMainWindow
{
Q_OBJECT
public:
SiLS(QWidget *parent = nullptr);
~SiLS();
private:
Ui::SiLS *ui;
pcl::visualization::PCLVisualizer::Ptr viewer_3D;
};
cpp文件内容如下:
SiLS::SiLS(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::SiLS)
{
ui->setupUi(this);
viewer_3D.reset (new pcl::visualization::PCLVisualizer ("viewer_3D", false));
viewer_3D->setupInteractor (ui->qvtkWidget->GetInteractor (), ui->qvtkWidget->GetRenderWindow ());
ui->qvtkWidget->SetRenderWindow(viewer_3D->getRenderWindow());
}
SiLS::~SiLS()
{
delete ui;
}
构造函数中只有这 3 行代码会产生大量内存泄漏问题。以下屏幕截图显示了 valgrind 在 Qt creator 中发现的一些泄漏。
SiLS.cpp:10:0 表示 cpp 文件中的以下行:
viewer_3D.reset (new pcl::visualization::PCLVisualizer ("viewer_3D", false));