1.setAttribute(QT::WA_DeleteOnClose,true);
在Qt中点击关闭按钮其实是调用了setHidden(true),如果想及时清除内存即delete掉,此时可以在初始化阶段调用setAttribute(QT::WA_DeleteOnClose,true);
但这里存在一个问题,如果该对象采用new 的方式创建的,此时会出现野指针的情况。这时需要加入第二种内存管理机制
2.智能指针QPointer, QSharedDataPointer ,QSharedPointer,QWeakPointer,QScopedPointer,QScopedArrayPointer
说明:例如1中,对象已经被释放了,但是指针并没有手动设置成NULL,而且也无法手动设置为NULL,此时就用到了智能指针,QPointer会自动识别到对象是否已被释放掉了。
QPointer 已经过时,可以被QWeakPointer所替代,它不是线程安全的。
QSharedDataPointer -- 提供对数据的COPY-ON-WRITE以及浅拷贝,提供对数据(而不是指向数据的指针)的线程安全的保护。(注:提供对数据的线程安全保护要结合QsharedData来完成),它是线程安全的。
QSharedPointer -- 实现了引用计数的可共享资源的强类型指针,它是线程安全的。
QWeakPointer -- 实现了引