【问题标题】:Qt memory managementQt 内存管理
【发布时间】:2012-11-22 22:56:13
【问题描述】:

考虑以下 sn-p 代码:

1: QPushButton *p_Button = new QPushButton(this); 
2: QPushButton myButton(this); 

第 1 行this 引用了 QWidget,因此在我的示例中 p_Button 是 QWidget 的子项:当 QWidget 死亡时(超出范围??)他的析构函数 从堆中删除 p_Button 并调用p_Button 的析构函数。

第 2 行:与第 1 行相同,但 QWidget 的析构函数删除 myButton,因为它的子元素也是 myButton?

如果我说错了,请纠正我并回答我的问题。

【问题讨论】:

  • here 的一个更好的问题。

标签: c++ qt memory


【解决方案1】:

是的,是的。如果 QObject 不是由 new 创建的,则必须在其父级之前销毁它。否则,父级会删除子级,程序可能会崩溃。

Qt 在object trees and ownership 上有一些很好的文档来解释这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-30
    • 2011-01-30
    • 2012-02-27
    • 1970-01-01
    • 2019-09-27
    • 2014-06-02
    • 2014-06-05
    • 1970-01-01
    相关资源
    最近更新 更多