Qt中特有的类对象机制——内存自动释放

这段时间一直在学Qt,也一直在做这方面的东西,觉得对Qt的机制已经很了解了,不就是信号与槽加上C++的机制吗,但是今天遇到的问题让我纠结了很时间。这个问题出现在析构函数的地方,以为是之前new的一个对象,多次删除造成的,但是检查一下,根本没有发现有这个方面的,问题。最后以关键词“QT”,“析构函数”搜索了一下发现了这边文章http://www.cnblogs.com/foxhengxing/archive/2010/12/24/1916355.html,大致读了一下,明白为什么会出现这样的错误。

现在觉得Qt还是有很多没有懂,不过吧,我觉得Qt这个双重机制能大大减小内存泄露的几率,哪双重机制呢,第一,当然是我们程序员自己控制的,new一个对象,生命周期结束之后一定要delete它,第二个是Qt自己的机制,就是父类对象销毁时会销毁它的所以子类对象。

通过这个错误我发现在Qt编程中,如果一个类不必要有父类的话,定义构造函数的时候不必须定义成NetWorkTestOne(QWidget *parent = 0, Qt::WFlags flags = 0);这种带顶层父类的方式,而是定义成NetWorkTestOne();。如果一个使用一个类,是在其他类中,那么最好是定义成这样的方式,这样可以保证在父类销毁的时候把子类也销毁掉,这样可以降低内存泄露的几率。它跟java很相似,java是有自己的内存回收机制,就相当于Qt的顶层父类,来控制对象的生命周期。

总结一下:

Qt内存自动释放的条件是

1. 必须是QObject的派生类。

2. 必须指定了parent对象。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值