WA_DeleteOnClose删除所有成员



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

情况是这样的:我有一个扩展QMainWindow的 M 类,在这个类中我使用堆分配数组。我读到WA_DeleteOnClose当窗口 M 关闭并调用析构函数时,每个以 M 为父级的成员都将被删除。

我的问题是:数组是怎么回事?我知道当调用析构函数时,每个堆栈分配的成员都会被释放,并且我知道,在正常情况下,我必须在数组上调用 delete[]。但是在这种情况下呢?如果我不使用 delete[] 我的数组是因为 WA_DeleteOnClose 属性而释放的吗?另一个问题。WA_DeleteOnClose属性是否由所有 M 的子项继承?换句话说,我是否必须在所有子项中将该属性设置为 true?

Qt只会调用你的析构函数,它不会删除你的类本身的每个成员!
如果类的析构函数中有delete[] myArray,则将正确删除数组。

如果不在析构函数中delete[]数组,它将泄漏。

但更好的是,不要费心自己管理内存,这是 C++11 中的糟糕风格。
在类中使用QVectorstd::array而不是原始数组。

相关内容

  • 没有找到相关文章

最新更新