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简介
觉得文章对你有帮助,可以用微信扫描二维码捐赠给博主,谢谢!
如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:129518033