自动回收内存
1. 在栈上实例化
2. 在堆上实例化,但是使用共享指针,当引用计数为0时则自动释放
3. QWidget设置属性,关闭窗口时自动释放:setAttribute(Qt::WA_DeleteOnClose);
4. QAbstractAnimation设置属性,关闭窗口时自动释放:QAbstractAnimation::DeleteWhenStopped
5. 指定父对象
Qt使用对象树维护,当删除父对象时把其子对象一起删除,即(删除父窗口,子窗口一起删除)。如果不指定父对象,则父窗口和子窗口独立,需要手动delete
6. 直接间接继承QObject
QObject内部有一个list,会保存children(addChild()),还有一个指针保存parent(setParent()),当自己析构时,会自己从parent列表中删除并且析构所有的children
7. 智能指针QPointer:其实是模板,用于指向 QObject 及派生类的对象。当一个 QObject 或派生类对象被删除后,QPointer 能自动把其内部的指针设为 nullptr
8. deleteLater:释放对象时使用deleteLater而不是delete,deleteLater会等待事件处理完才删除对象
9. 线程池任务属性:QRunnable::setAutoDelete(),在线程结束后自动释放
MediaSource::setAutoDelete()
Qt:内存回收
最新推荐文章于 2023-07-24 10:37:56 发布