QT笔记之内存管理
转载:https://blog.csdn.net/myjqc/article/details/8569196 (链接错误解决办法)
我们都知道在C++中,new和delete是成对出现的,那么在QT中内存中是不是同样如此呢,我们来验证一下。
第一步新建工程: MyWidget



第二步:添加一个自定义的按钮类(MyButton)


第三步:修改自定义按钮类的父类为QPushButton(QPushButton也是继承自QWidget),同时自定义按钮类添加析构函数,并在析构函数里打印输出
mybutton.h
#ifndef MYBUTTON_H
#define MYBUTTON_H #include <QPushButton> class MyButton : public QPushButton
{
Q_OBJECT
public:
explicit MyButton(QWidget *parent = );
~MyButton();
signals: public slots: }; #endif // MYBUTTON_H
mybutton.cpp
#include "mybutton.h"
#include <QDebug> MyButton::MyButton(QWidget *parent) :
QPushButton(parent)
{
} MyButton::~MyButton()
{
qDebug() << "析构函数被调用了";
}
第四步:在主窗口上创建显示
#include "mywidget.h"
#include "mybutton.h" MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
{
MyButton *pBtn = new MyButton(this);
pBtn->setText(QStringLiteral("我是动态创建的按钮,我不手动释放"));
} MyWidget::~MyWidget()
{ }
第五步:开始调试,发生了链接错误

原因是moc没有更新,无论怎么重新构建,清理,构建都不行,用一个笨办法解决了:就是删除项目同名文件夹下的调试文件夹

然后重新调试运行,成功了

第六步:关闭窗口,程序退出,看自定义按钮类的析构函数是否被调用

可以看到打印出了 析构函数被调用。因此我们总结出,在QT中,有它自己的内存回收机制,但也是有前提条件的:
1.动态创建的对象必须指定父对象
2.动态创建的对象直接或者间接继承于QObject基类
QT笔记之内存管理的更多相关文章
- 6.关于QT中的内存管理,动态的制作,动态库的调用,静态库的制作
一 QT的内存管理 1 QT中的内存管理是QObject来管理的 2 QT中的内存管理没有cocos2dx中的引用计数 3 组件能够指定父对象 QTimer *timer = QTime ...
- linux kernel学习笔记-5内存管理_转
void * kmalloc(size_t size, gfp_t gfp_mask); kmalloc()第一个参数是要分配的块的大小,第一个参数为分配标志,用于控制kmalloc()的行为. km ...
- XV6学习笔记(2) :内存管理
XV6学习笔记(2) :内存管理 在学习笔记1中,完成了对于pc启动和加载的过程.目前已经可以开始在c语言代码中运行了,而当前已经开启了分页模式,不过是两个4mb的大的内存页,而没有开启小的内存页.接 ...
- Linux内核设计笔记12——内存管理
内存管理学习笔记 页 页是内核管理内存的基本单位,内存管理单元(MMU,管理内存并把虚拟地址转化为物理地址的硬件)通常以页为单位进行处理,从虚拟内存的角度看,页就是最小单位. struct page{ ...
- 《代码的未来》读书笔记:内存管理与GC那点事儿
一.内存是有限的 近年来,我们的电脑内存都有好几个GB,也许你的电脑是4G,他的电脑是8G,公司服务器内存是32G或者64G.但是,无论内存容量有多大,总归不是无限的.实际上,随着内存容量的增加,软件 ...
- 嵌入式linux学习笔记1—内存管理MMU之虚拟地址到物理地址的转化
一.内存管理基本知识 1.S3C2440最多会用到两级页表:以段的方式进行转换时只用到一级页表,以页的方式进行转换时用到两级页表.页的大小有三种:大页(64KB),小页(4KB),极小页(1KB).条 ...
- iOS阶段学习第21天笔记(ARC内存管理-Copy-代理)
iOS学习(OC语言)知识点整理 一.OC 中的ARC内存管理 1)ARC中释放对象的内存原则:看这个对象有没有强引用指向它 2)strong:强引用,默认情况下的引用都是强引用 3) weak:弱引 ...
- iOS 阶段学习第九天笔记(内存管理)
iOS学习(C语言)知识点整理 一.内存管理 1)malloc , 用于申请内存; 结构void *malloc(size_t),需要引用头文件<stdlib.h>:在堆里面申请内存,si ...
- Linux内核学习笔记——内核内存管理方式
一 页 内核把物理页作为内存管理的基本单位:内存管理单元(MMU)把虚拟地址转换为物理 地址,通常以页为单位进行处理.MMU以页大小为单位来管理系统中的也表. 32位系统:页大小4KB 64位系统:页 ...
随机推荐
- nat123学习笔记
1.NAT123内网映射端口 在无内网路由管理员权限的情况下,需要将内网web应用暴露到公网访问,此时需要用到花生壳或者nat123(两个应用都不是免费的,其中花生壳可以8元认证,以后免费使用,nat ...
- kail linux arp欺骗
首先连接wifi,进入内网 1,查看内网的存活主机 命令 fping -asg 192.168.1.0/24 (视不同环境而定,假设这里的路由器地址为 192.168.1.1) 也可利用其他 ...
- D Tree Requests dfs+二分 D Pig and Palindromes -dp
D time limit per test 2 seconds memory limit per test 256 megabytes input standard input output stan ...
- QWidget 的 close 与 Qt::WA_DeleteOnClose
[1]close 与 Qt::WA_DeleteOnClose简介 1.1 Qt源码 /*! Closes this widget. Returns \c true if the widget was ...
- QScrollBar & QSlider & QDial
[1]滚动条 & 滑块 & 表盘 Qt示例工程: (1)slidergroup.h #include <QGroupBox> QT_BEGIN_NAMESPACE clas ...
- bash shell 编程练习
原始文件: find /etc -name passwd 2>&1 | tee ee.log 1. cat -n 把 e.log 的文档内容加上行号后输入 e2.log 这个文档里: x ...
- Gamma函数深入理解
Gamma函数 当n为正整数时,n的阶乘定义如下:n! = n * (n - 1) * (n - 2) * … * 2 * 1. 当n不是整数时,n!为多少?我们先给出答案. 容易证明,Γ(x + 1 ...
- 转:SQL Server游标的使用
使用游标步骤:1.在某个查询的基础上声明游标 --声明游标 declare c_Customers cursor for --查询所有店铺客户的客户编号 下面我们来看游标定义的参数: LOCAL和GL ...
- 外网上传到NAS速度很慢是什么情况?上行1M都不到,但是测试有4M
外网上传到NAS速度很慢是什么情况?上行1M都不到,但是测试有4M NAS可以将自己的影片,图片,音乐都放在NAS中.在家中就能无线共享了.在其他地方要下载自己nas里的影片,下载速度主要取决于家里宽 ...
- CSR8670的A2DP与AVRCP的应用笔记
1. A2DP1.1. 基本概念阅读A2DP SPEC V12的1.1章,可知: Advanced Audio Distribution Profile(A2DP)典型应用是立体声音乐播放器的音乐到耳 ...