C++ Qt内存管理

C++ Qt内存管理,c++,qt,memory,C++,Qt,Memory,考虑以下代码片段: 1: QPushButton *p_Button = new QPushButton(this); 2: QPushButton myButton(this); 第1行:这是指QWidget,因此p_Button在我的示例中是QWidget的子项:当QWidget死亡(超出范围??)时,他的析构函数从堆中删除p_Button并调用p_Button的析构函数 第2行:与第1行相同,但QWidget的析构函数是否删除myButton,因为它的子项也是myButton 如果我

考虑以下代码片段:

1: QPushButton *p_Button = new QPushButton(this); 
2: QPushButton myButton(this); 
第1行:这是指QWidget,因此p_Button在我的示例中是QWidget的子项:当QWidget死亡(超出范围??)时,他的析构函数从堆中删除p_Button并调用p_Button的析构函数

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


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

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

Qt有一些很好的文档说明了这一点。

这是一个更好的问题。