初学Qt:内存回收机制
来源:互联网 发布:复制淘宝店铺违规吗 编辑:程序博客网 时间:2024/06/02 04:15
在Qt创建界面时,经常用到new来创建新的控件,如
QPushButton b1 = new QPushButton(this);
在C++当中,new出一个动态分配的内存空间后,一定在程序结尾加入delete,否则会出现内存泄露问题。
但是在Qt当中,程序在退出之前会自动调用一些析构函数,将一些对象所动态分配的地址释放,而这些对象有以下两种情况:
1、该对象所在的类是继承与或间接继承与QObject类。
比如:QWidget是继承与QObject的,而所有的控件又是继承与QWidget的,因此如果一个具体的控件是new出来的,那程序会在最后自动把它delete(即调用析构函数来释放地址)。
2、该对象所在的类虽然不是继承与或间接继承与QObject类,但是该对象的对象树最终是继承于QObject或其派生类的。
所谓对象树,即以父子关系联系起来的所有对象。制定父对象的方式有以下两种,
QPushButton b1 = new QPushButton(this);b1.SetParrent(this);对象树如下:
上一级对象是下一级的父对象,如果对象a是是由CObject或其子类实例化的,那么程序在结束时会自动释放对象树内的所有的对象,而释放对象是由下到上(即由c到b再到a)。
PS:要明确“父对象、子对象”以及“父类、子类”两组概念之间的区别。
阅读全文
0 0
- 初学Qt:内存回收机制
- Qt 内存回收机制
- Qt内存回收机制
- Qt内存回收机制(学习1)
- c++ new与delete与qt内存回收机制
- 内存回收机制
- java内存回收机制
- .net 内存回收机制
- Java 内存回收机制
- java内存回收机制
- Java内存回收机制
- android内存回收机制
- JAVA 内存回收机制
- Java内存回收机制
- java 内存回收机制
- java内存回收机制
- jvm内存回收机制
- 内存回收机制
- 手敲排序&HqzSort
- C# Xp 兼容性问题集
- 小迪教程第三天——access注入片段
- Hadoop和Spark学习日记3
- markdown编辑器
- 初学Qt:内存回收机制
- 欢迎使用CSDN-markdown编辑器
- ccf刷题记04
- 剑指offer:二叉树的镜像
- 第一行代码-活动的生存周期
- 51 nod 1623 完美消除(单调栈+数位DP)
- Linux入门(一)
- 虚方法virtual和抽象方法abstract以及多态的研究(重新整理)
- 手动绕过百度加固Debug.isDebuggerConnected反调试的方法