Qt中关于delete的应用

本文探讨了Qt中如何处理delete操作,特别是在QObject及其派生类中的内存管理。Qt的半自动内存管理机制允许在某些情况下避免手动delete,如设置特定标志位。文中详细解释了父子关系、对象的创建与解除、以及如何安全地利用Qt的内存管理特性,避免陷阱和内存泄露。
摘要由CSDN通过智能技术生成

前言

这学期开了专业课Qt,第一次接触到C++,在C++中学习过程中,我们都知道:

delete 和 new 必须 配对使用(一 一对应):delete少了,则内存泄露,多了麻烦更大。
Qt作为C++的库,显然是不会违背C++的前述原则的。可是:

在Qt中,我们很多时候都疯狂地用new,却很少用delete,缺少的 delete 去哪儿了?!
本文整理了C++中关于delete和new的知识点。

Qt半自动的内存管理

在Qt中,以下情况下你new出的对象你可以不用 亲自去delete (但你应该清楚delete在何处被Qt调用的,怎么被调用的):

QObject及其派生类的对象,如果其parent非0,那么其parent析构时会析构该对象(本文内容围绕这一点展开 )
除此之外,有些类的对象可以接收设置一些特别的标记,比如:

QWidget及其派生类的对象,可以设置 Qt::WA_DeleteOnClose 标志位(当close时会析构该对象)
QAbstractAnimation派生类的对象,可以设置 QAbstractAnimation::DeleteWhenStopped
QRunnable::setAutoDelete()
MediaSource::setAutoDelete()

注意:这些用法会有些陷阱 ,请注意看本文最后的3个小例子。

在Qt中,最基础和核心的类是:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值