0

我正在使用带有 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));

4

0 回答 0