WA_DeleteOnClose删除所有成员?

时间:2015-06-11 20:52:25

标签: c++ heap qt5 destructor

我在Qt5的WA_DeleteOnClose属性方面遇到了麻烦。

这种情况:我有一个扩展QMainWindow的类M,在这个类中我使用堆分配的数组。当窗口M关闭时,我用WA_DeleteOnClose读取,并且调用了析构函数,删除了M为父的每个成员。

我的问题是:关于阵列的内容是什么?我知道每个堆栈分配的成员在调用析构函数时都会被释放,我知道,在正常情况下,我必须在我的数组上调用delete []。但在这些条件下呢?如果我不使用delete [],由于WA_DeleteOnClose属性,我的数组是否已取消分配? 另一个问题。 WA_DeleteOnClose属性是否由所有M的孩子继承?换句话说,我是否必须在所有儿童中将该属性设置为true?

1 个答案:

答案 0 :(得分:0)

Qt只会打电话给你的析构函数,它不会删除你班级中的每个成员! 如果您的类的析构函数中有delete[] myArray,则您的数组将被正确删除。

如果你没有在析构函数中delete[]你的数组,它就会泄漏。

但更好的是,不要费心自己管理内存,这在C ++ 11中风格很差 在您的班级中使用QVectorstd::array代替原始数组。