从 Qt 类派生的用户定义类中的内存所有权
Ownership of memory in user-defined classes deriving from Qt classes
我知道,在Qt中,父对象拥有其子对象的所有权。但是,如果我有自己的类派生自Qt类,我是否需要控制派生类析构函数中的内存,或者Qt是否为我做?下面是一个示例:
#include <QWidget>
#include <QPushButton>
class MyWidget: public QWidget{
public:
MyWidget(QWidget* parent = 0): QWidget(parent) {
this->setAttribute(Qt::WA_DeleteOnClose);
m_button = new QPushButton(this);
}
~MyWidget() { delete m_button; } // do I need this to prevent leaks?
private:
QPushButton* m_button;
}
所以我的问题是,我需要~MyWidget()
来防止内存泄漏吗?还是QWidget
以某种方式为我管理内存?
不,你没有,QObject
处理这个问题。只要派生的所有内容都在父子树中,就会被收集。 QWidget
继承QObject
,你继承QWidget
。所以你都准备好了。
请注意,仍然有许多Qt类型不继承QObject
。最好看看文档以确定。
相关文章:
- 将字符串存储在c++中的稳定内存中
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- Win32编译器选项和内存分配
- 当vector是tje全局变量时,c++中vector的内存管理
- 带内存和隔离功能的SQLite
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 迭代时从向量和内存中删除对象
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 为什么示例代码访问IUnknown中已删除的内存
- 如何在C++类内存结构中创建"spacer"?
- Qt对象所有权内存泄漏
- 使shared_ptr失去对内存的所有权
- 给出一个 std::vector 对另一个向量的内存的所有权?
- 使用PYBIND11,如何为Array_t对象设置基础内存的所有权
- 如何从eigen :: matrix获取内存所有权
- 从 Qt 类派生的用户定义类中的内存所有权
- MSXML方法是否对其BSTR参数拥有内存所有权?
- 从C#COM方法返回对象和内存所有权