参考视频:https://www.bilibili.com/video/BV1XW411x7NU?p=16

Qt中内存的回收是自己完成的,实验中,我们自定义一个按钮,通过重写析构函数来观察现象。

新建工程后,再添加自定义的按钮之后,有如下文件:

mybutton.h和mybutton.cpp是我们自定义的文件,里面实现了我们自定义的按钮类。

mybutton.h文件中的代码:

 1 #ifndef MYBUTTON_H
2 #define MYBUTTON_H
3
4 //#include <QWidget>
5 #include <QPushButton>
6
7 class mybutton : public QPushButton
8 {
9 Q_OBJECT
10 public:
11 explicit mybutton(QWidget *parent = nullptr);
12 //重写一个析构函数
13 ~mybutton();
14
15 signals:
16
17 public slots:
18 };
19
20 #endif // MYBUTTON_H

mybutton.cpp文件中的代码:

 1 #include "mybutton.h"
2 #include <QDebug>
3
4 //mybutton::mybutton(QWidget *parent) : QPushButton(parent)
5 //QPushButton(parent):用于给基类构造函数传参
6 mybutton::mybutton(QWidget *parent) : QPushButton(parent)
7 {
8
9 }
10
11 mybutton::~mybutton()
12 {
13 qDebug("按钮被析构");
14 }

widget.h文件就是自动生成的代码,没做改动,就不贴出来了。

widget.cpp文件的代码如下:

 1 #include "widget.h"
2 #include "mybutton.h"
3
4 Widget::Widget(QWidget *parent)
5 : QWidget(parent)
6 {
7 //1)指定父对象后 2)直接或间接继承于QObject
8 //子对象如果是动态分配空间的,不需要手动释放delete
9 //系统会自动释放
10 mybutton *b = new mybutton(this);
11 b->move(100, 100);
12 b->setText("button");
13 b->resize(200, 100);
14 }
15
16 Widget::~Widget()
17 {
18
19 }

运行,进行测试:

我们把窗口关闭,会出现如下打印:

可以看出,内存被自动回收了。

Qt内存回收机制的更多相关文章

  1. Qt ------ 内存回收机制、new对象的回收

    写在前面的总结: 建议:对于不能指定父对象的对象(对象通过moveToThread()移入其他线程.没有继承QObject的类产生的对象),在其他线程通过deleteLater()内存回收,其他通过指 ...

  2. Qt中的内存回收机制

    Qt中的内存回收机制 在Qt中创建对象的时候会提供一个 Parent对象指针(可以查看类的构造函数),下面来解释这个parent到底是干什么的. QObject是以对象树的形式组织起来的.当你创建一个 ...

  3. Qt 内存管理机制(转)

      许转载http://devbean.blog.51cto.com/448512/526734 强类型语言在创建对象时总会显式或隐式地包含对象的类型信息.也就是说,强类型语言在分配对象内存空间时,总 ...

  4. Qt 内存管理机制

    这篇文章首先发布于我的主页 http://www.devbean.info,以后也会直接发布在那里.现在有 Flex 4 的一篇和 <从 C++ 到 Objective-C>系列,感谢大家 ...

  5. Android 操作系统的内存回收机制(转载)

    Android 操作系统的内存回收机制(转载) Android APP 的运行环境 Android 是一款基于 Linux 内核,面向移动终端的操作系统.为适应其作为移动平台操作系统的特殊需要,谷歌对 ...

  6. JVM内存回收机制简述

    JVM内存回收机制涉及的知识点太多了,了解越多越迷糊,汗一个,这里仅简单做个笔记,主要参考<深入理解Java虚拟机:JVM高级特性与最佳实践(第二版)> 目前java的jdk默认虚拟机为H ...

  7. memcache的内存回收机制

    memcache不会释放内存,而是重新利用. 在缓存的清除方面,memcache是不释放已分配内存.当已分配的内存所在的记录失效后,这段以往的内存空间,memcache只会重复利用. memcache ...

  8. JVM内存回收机制

    1. JVM内存回收机制简述 http://www.cnblogs.com/lzrabbit/p/3826738.html

  9. Android 操作系统的内存回收机制[转]

    转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-android-mmry-rcycl/ Android APP 的运行环境 Andro ...

  10. Redis的内存回收机制

    Redis的内存回收机制 2018年01月16日 17:11:48 chs007chs 阅读数:1172   Redis的内存回收机制主要体现在一下两个方面: 删除过期时间的键对象 删除过期键对象 : ...

随机推荐

  1. mmcls 多标签模型部署在torch serve

    GitHub仓库:gy-7/mmcls_multi_label_torchserve (github.com) 各个文件说明: cls_requests_demo:分类模型请求api服务的demo d ...

  2. Fatal: (vsim-3381) obsolete library format 解决办法

    有很多软件仿真都是black boxs 黑盒子模式,所以用modelsim提示该错误.错误的原因是在于库用了其他旧的软件版本编译好的. 所以解决的办法如下: 在已经映射好的库选择refresh就可以刷 ...

  3. 【转】Java程序员常用工具类库 - 目录

    原文地址:http://rensanning.iteye.com/blog/1553076 有人说当你开始学习Java的时候,你就走上了一条不归路,在Java世界里,包罗万象,从J2SE,J2ME,J ...

  4. 如何使用XSSFWorkbook读取文本薄?

    [版权声明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/18146625 出自[进步*于辰的博客] 1.文件兼容类 ...

  5. 【力扣精选】Oracle SQL 176. 第二高的薪水

    [力扣精选]Oracle SQL 176. 第二高的薪水 这道题很适合用来作为窗口函数的入门使用练习 链接如下: https://leetcode.cn/problems/second-highest ...

  6. 单元测试必备:Asp.Net Core代码覆盖率实战,打造可靠应用 !

    引言 在前几章我们深度讲解了单元测试和集成测试的基础知识,这一章我们来讲解一下代码覆盖率,代码覆盖率是单元测试运行的度量值,覆盖率通常以百分比表示,用于衡量代码被测试覆盖的程度,帮助开发人员评估测试用 ...

  7. PeLK:101 x 101 的超大卷积网络,同参数量下反超 ViT | CVPR 2024

    最近,有一些大型内核卷积网络的研究,但考虑到卷积的平方复杂度,扩大内核会带来大量的参数,继而引发严重的优化问题.受人类视觉的启发,论文提出了外围卷积,通过参数共享将卷积的复杂性从 \(O(K^{2}) ...

  8. 通过 KoP 将 Kafka 应用迁移到 Pulsar

    通过 KoP 将 Kafka 应用迁移到 Pulsar 版权声明:原文出自 https://github.com/streamnative/kop ,由 Redisant 进行整理和翻译 目录 通过 ...

  9. 移动端、微信小程序兼容性问题汇总(持续更新……

    1. safari浏览器字体不能自动随网页缩放调整大小 -webkit-text-size-adjust:100% 2. 点击<button><input>有灰色透明背景 -w ...

  10. vue监听watch

    export default { watch:{         showArea(val,_val){                            console.log('showAre ...