QT中对象释放顺序的一个示例

      为了研究Qt中对象释放,先编写一个简单的QT 应用程序。源代码如下:

 

 

   初步一看,代码没啥问题,运行也OK。 但是当关闭窗口后,出现了Crash。 怎么回事???

 

   仔细查看代码,发现应该是创建的window对象,在关闭窗口时,弹出栈释放, 同时也将子窗口hwButton也释放。然后,创建的hwButton对象又进行弹出栈, 造成了重复释放。 难怪会出现上述问题。

 

   修正方法是:将window对象放在hwButton对象之前进行定义初始化。 这样一来,运行时,从栈顶到栈底的对象依次是hwButton, window, hwApp.    运行关闭窗口时,hwButton先出栈释放,然后通知其父窗口window将其移除在,不再进行重复释放。

 

   OK! 最后问题得以解决。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值