Advertisement

Qt——资源耗尽

阅读量:

一、Qt内存管理机制

Qt内存管理机制:该软件架构具备维护能力。其中的核心特征是将可视元素组织为子组件与其父组件之间的关联;而非可视元素则通过从属关系形成层级结构。当父组件被移除时。

C++语言中delete操作符与new关键字必须一一对应配合使用。若缺少相应的new操作,则可能导致内存泄漏问题;反之若数量过多,则可能带来不必要的麻烦。在 Qt 框架中,默认情况下通常不会频繁调用delete函数(除非有特殊需求)。然而,在 Qt 中定义的对象(如QObject及其继承类)默认会设置父节点(可以通过构造函数或setParent()函数指定)。当父节点被删除时(无论其是由new还是栈内分配的方式创建),所有子节点都会自动被删除以释放内存空间。需要注意的是,在这种机制下仅能释放栈内对象而无法手动控制栈外对象的内存管理会导致系统出现严重错误(例如堆溢出),因此了解 Qt 的半自动内存管理机制至关重要。此外还需要注意到子节点并不知道自己是否已经被正确删除(避免出现空指针引用的情况),因此熟悉 Qt 提供的智能指针接口 QPointer 是必要的前提条件之一

二、内存泄漏例子

1、 label既没有指定parent,也没有对其调用delete,造成内存泄漏

复制代码
 #include <QApplication>  

全部评论 (0)

还没有任何评论哟~