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

如需转载请标明出处:http://blog.csdn.net/itas109 <http://blog.csdn.net/itas109>
QQ技术交流群:129518033
<http://shang.qq.com/wpa/qunwpa?idkey=2888fa15c4513e6bfb9347052f36e437d919b2377161862948b2a49576679fc6>

目录

<>
文章目录

* #QT技巧 - QT中如何确定new对象是否要释放
<https://blog.csdn.net/itas109/article/details/79977912#QT__QTnew_0>
* @[toc] <https://blog.csdn.net/itas109/article/details/79977912#toc_8>

环境:
QT版本:5.6.2

基础内容阅读:
QT基础 - QObject简介 <https://blog.csdn.net/itas109/article/details/79977739>

##1.前言


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

##2.QT的自动释放机制
在QT基础 - QObject简介 <https://blog.csdn.net/itas109/article/details/79977739>
一文中提到:

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

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

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

Reference:
QT基础 - QObject简介 <https://blog.csdn.net/itas109/article/details/79977739>

觉得文章对你有帮助,可以扫描二维码捐赠给博主,谢谢!

如需转载请标明出处:http://blog.csdn.net/itas109 <http://blog.csdn.net/itas109>
QQ技术交流群:129518033
<http://shang.qq.com/wpa/qunwpa?idkey=2888fa15c4513e6bfb9347052f36e437d919b2377161862948b2a49576679fc6>