labelme icon indicating copy to clipboard operation
labelme copied to clipboard

释放资源问题

Open Z-XQ opened this issue 1 year ago • 1 comments

您好,非常感谢您的开源工作,代码简洁明了,且注释清晰完备,我从中学到很多!但是有个小疑问。关于资源释放问题。

`#include "CentralWInit2D.h" #include"Command.h"

/// \brief 2d命令栈类,用于实现撤销和重做功能,继承Command类 class My::Command2D:public My::Command{ public:

/// \brief 存放中心组件指针
CentralWInit2D* manager;

/// \brief 记录添加标注
virtual void logAdd(int index);

/// \brief 记录删除标注
virtual void logDelete(int index,int id);

/// \brief 记录移动标注
virtual void logMove(int index,float xoffset,float yoffset,int id=0);

/// \brief 记录更改标注
virtual void logChange(int index,QString s1,QString s2);

/// \brief 撤销功能
virtual void undo();

/// \brief 重做功能
virtual void redo();

~Command2D(){
    delete manager;
}

};

#endif // COMMAND2D_H ` 上面的delete manager; manager并非是Command生成的,哪个类生成的就由哪个类释放是不是好点?

Z-XQ avatar Dec 26 '23 03:12 Z-XQ

在mainwindow.cpp有两处生成centralwidget=new CentralWInit2D(this); 分别是38行(2D模式下)和589行(3D模式下)。

其析构函数增加内如如下是不是好点:

MainWindow::~MainWindow()
{
    // MainWindow new出来的centralwidget,就由MainWindow析构函数释放
    if (centralwidget)
    {
        delete centralwidget;
        centralwidget = nullptr;
    }
}

Z-XQ avatar Dec 26 '23 03:12 Z-XQ