QT技巧 - QT中如何确定new对象是否要释放

时间:2024-03-30 16:40:57

QT技巧 - QT中如何确定new对象是否要释放


如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:129518033

目录


环境:
QT版本:5.6.2

基础内容阅读:
QT基础 - QObject简介


1.前言

我们都知道C++中的new和delete是需要成对存在的,否则会导致内存泄漏。但是,在QT中,有的时候我们new出来的对象,并不需要delete也会释放掉。那么,究竟什么时候需要手动释放,什么时候不需要释放,交给QT自动释放呢?

2.QT的自动释放机制

QT基础 - QObject简介一文中提到:
QObject在对象树中组织自己。当你用另一个对象作为父对象创建一个QObject时,对象将自动添加到父对象的children()列表中。父母拥有对象的所有权;即它会自动删除其子析构器中的子元素。

因此,我们可以得出如下结论:
当且仅当一个对象满足如下条件:
1.该对象是QObject的派生类
2.该对象的父类不为NULL
那么,该对象的父类删除时,该对象会被自动删除,无需手动释放。

3.结论

当且仅当一个对象满足如下条件:
1.该对象是QObject的派生类
2.该对象的父类不为NULL
那么,该对象的父类删除时,该对象会被自动删除,无需手动释放。


Reference:
QT基础 - QObject简介

觉得文章对你有帮助,可以用微信扫描二维码捐赠给博主,谢谢!
QT技巧 - QT中如何确定new对象是否要释放
如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:129518033