Qt内存回收机制
参考视频: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内存回收机制的更多相关文章
- Qt ------ 内存回收机制、new对象的回收
写在前面的总结: 建议:对于不能指定父对象的对象(对象通过moveToThread()移入其他线程.没有继承QObject的类产生的对象),在其他线程通过deleteLater()内存回收,其他通过指 ...
- Qt中的内存回收机制
Qt中的内存回收机制 在Qt中创建对象的时候会提供一个 Parent对象指针(可以查看类的构造函数),下面来解释这个parent到底是干什么的. QObject是以对象树的形式组织起来的.当你创建一个 ...
- Qt 内存管理机制(转)
许转载http://devbean.blog.51cto.com/448512/526734 强类型语言在创建对象时总会显式或隐式地包含对象的类型信息.也就是说,强类型语言在分配对象内存空间时,总 ...
- Qt 内存管理机制
这篇文章首先发布于我的主页 http://www.devbean.info,以后也会直接发布在那里.现在有 Flex 4 的一篇和 <从 C++ 到 Objective-C>系列,感谢大家 ...
- Android 操作系统的内存回收机制(转载)
Android 操作系统的内存回收机制(转载) Android APP 的运行环境 Android 是一款基于 Linux 内核,面向移动终端的操作系统.为适应其作为移动平台操作系统的特殊需要,谷歌对 ...
- JVM内存回收机制简述
JVM内存回收机制涉及的知识点太多了,了解越多越迷糊,汗一个,这里仅简单做个笔记,主要参考<深入理解Java虚拟机:JVM高级特性与最佳实践(第二版)> 目前java的jdk默认虚拟机为H ...
- memcache的内存回收机制
memcache不会释放内存,而是重新利用. 在缓存的清除方面,memcache是不释放已分配内存.当已分配的内存所在的记录失效后,这段以往的内存空间,memcache只会重复利用. memcache ...
- JVM内存回收机制
1. JVM内存回收机制简述 http://www.cnblogs.com/lzrabbit/p/3826738.html
- Android 操作系统的内存回收机制[转]
转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-android-mmry-rcycl/ Android APP 的运行环境 Andro ...
- Redis的内存回收机制
Redis的内存回收机制 2018年01月16日 17:11:48 chs007chs 阅读数:1172 Redis的内存回收机制主要体现在一下两个方面: 删除过期时间的键对象 删除过期键对象 : ...
随机推荐
- TaskPool 和 Worker 的对比
作用: TaskPool(任务池)和 Worker 都为应用程序提供多线程运行环境,用于处理耗时的计算任务或其他密集型任务,避免阻塞主线程,提高系统性能. 实现特点对比: 内存模型:TaskPoo ...
- 推荐一个计算Grad-CAM的Python库
前言 类激活图CAM(class activation mapping)用于可视化深度学习模型的感兴趣区域,增加了神经网络的可解释性.现在常用Grad-CAM可视化,Grad-CAM基于梯度计算激活图 ...
- 离线语音识别,vosk,离线流式实时静音噪声监测,支持多语言开发python c++ c# java等
#!/usr/bin/env python3 from vosk import Model, KaldiRecognizer, SetLogLevel import sys import os imp ...
- 《Effective C#》系列之(六)——提高多线程的性能
一.综述 <Effective C#>中提高多线程性能的方法主要有以下几点: 避免锁竞争:锁的使用会导致线程阻塞,从而影响程序的性能.为了避免锁竞争,可以采用无锁编程技术,如CAS(Com ...
- 力扣561(java&python)-数组拆分(简单)
题目: 给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从 1 到 n 的 min(ai, ...
- Elastic与阿里云助力汽车及出行产业数字化转型
简介:目前,阿里云和Elastic在全国已经有很多的项目正在开展合作,而在移动出行领域与享道出行的合作案例,则是代表性的. 在汽车产业变革逐步深入的当下,云计算.大数据等信息技术成为了汽车企业经历数 ...
- 如何实现事务原子性?PolarDB原子性深度剖析
简介: 在巍峨的数据库大厦体系中,查询优化器和事务体系是两堵重要的承重墙,二者是如此重要以至于整个数据库体系结构设计中大量的数据结构.机制和特性都是围绕着二者搭建起来的.他们一个负责如何更快的查询到数 ...
- "友链"
欢迎来到我的友链小屋 展示本站所有友情站点,排列不分先后,均匀打乱算法随机渲染的喔! 友链信息 博客名称:麋鹿鲁哟博客网址:https://www.cnblogs.com/miluluyo/博客头 ...
- vue-axios设置公共的请求ip
1.安装axios,网上找方法 2.src->network->request.js并复制: import axios from 'axios' export function reque ...
- XAMPP安装与部署使用
#注:本文章资料借鉴自于Sunny王维,地址:https://blog.csdn.net/qq_36595013/article/details/80373597 [一]XAMPP介绍 XAMPP. ...