labelme
labelme copied to clipboard
释放资源问题
您好,非常感谢您的开源工作,代码简洁明了,且注释清晰完备,我从中学到很多!但是有个小疑问。关于资源释放问题。
`#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生成的,哪个类生成的就由哪个类释放是不是好点?
在mainwindow.cpp有两处生成centralwidget=new CentralWInit2D(this); 分别是38行(2D模式下)和589行(3D模式下)。
其析构函数增加内如如下是不是好点:
MainWindow::~MainWindow()
{
// MainWindow new出来的centralwidget,就由MainWindow析构函数释放
if (centralwidget)
{
delete centralwidget;
centralwidget = nullptr;
}
}