参考视频: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. 牛客网-SQL专项训练6

    ①要将employee 的表名更改为 employee_info,下面MySQL语句正确的是(A) 解析: RENAME用于表的重命名:RENAME  <NAME>(修改表名或索引名) 或 ...

  2. 加入自定义块对fashion_mnist数据集进行softmax分类

    在之前,我们实现了使用torch自带的层对fashion_mnist数据集进行分类.这次,我们加入一个自己实现的block,实现一个四层的多层感知机进行softmax分类,作为对"自定义块& ...

  3. portainer安装,配置,使用

    Portainer安装 Portainer是Docker容器管理可视化界面,主要是可以通过可视化界面创建,管理Dockert容器,并且支持多个节点管理(免费版支持五个节点). Portainer官网地 ...

  4. MaxCompute执行引擎核心技术DAG揭秘

    ​简介: 作为业界少有的EB级数据分布式平台,MaxCompute每天支撑上千万个分布式作业的运行.这些作业特点各异,既有包含数十万计算节点的超大型作业,也有中小规模的分布式作业.不同用户对于不同规模 ...

  5. IDA动态调试快捷键

    1. F2下断点2. F7进入函数,F8单步调试,F9跳到下一个断点,F2下断点,G调到函数地址3. N重名4. g跳到地址和函数名5. u取消把函数汇编变成机器码6. c就是把机器码变成汇编7. F ...

  6. dotnet OpenXML 读取 PPT 内嵌 xlsx 格式 Excel 表格的信息

    在 Office 中,可以在 PPT 里面插入表格,插入表格有好多不同的方法,对应 OpenXML 文档存储的更多不同的方式.本文来介绍如何读取 PPT 内嵌 xlsx 格式的表格的方法 读取方法和 ...

  7. 2018-5-28-WPF-Process.Start-出现-Win32Exception-异常

    title author date CreateTime categories WPF Process.Start 出现 Win32Exception 异常 lindexi 2018-05-28 10 ...

  8. K8s集群中部署SpringCloud在线购物平台(一)

    一.安装k8s高可用集群 主机名 IP 配置 网络 master控制节点 192.168.10.10 centos 7.9 4核4G 桥接 node1工作节点 192.168.10.11 centos ...

  9. 【Flink入门修炼】2-3 Flink Checkpoint 原理机制

    如果让你来做一个有状态流式应用的故障恢复,你会如何来做呢? 单机和多机会遇到什么不同的问题? Flink Checkpoint 是做什么用的?原理是什么? 一.什么是 Checkpoint? Chec ...

  10. C# - 自建 SDK 的 API 文档

    在代码中添加 API 文档 用户在使用类库时,通常需要通过 VS 的 Intellisense 或 F12 反编译查看 API 的注释,借助这些注释来了解如何使用 API.在 C# 源文件中,可以通过 ...