QT——对象树

在上一篇博客我们已经学会了QT的坏境安装以及打印一个hello world,但是如果有细心的朋友看了代码,就会发现有一个严重的问题,从C++语法看来存在内存泄漏。

上面的代码实际上并没有发送内存泄漏,是不是觉得有点奇怪?大家有没有发现上面的new代码里面传了参数,这是将this对象也就是parent与QLabel对象建立了父子关系,parent对象会将挂靠在parent里面利用类似于树形结构进行管理,里面有一个列表存储了挂靠在parent下的子对象,在parent对象释放的适合会将子对象也释放掉,为什么我们不手动释放呢?有两个原因

1,防止粗心大意导致内存泄漏(作用类似于C++智能指针)

2,代码一下就运行结束了,我们的窗口布局如果自己释放内容也一下子就结束了,利用对象树就可以在窗口关闭的合适时机释放,看接下来的代码和运行图。

注:挂到对象树上面就不要手动释放哦,可能导致资源重复释放和破坏对象树。

注意:挂的是空指针,不然可能重复释放资源和破坏对象树哦。

其实并不是代码出现了问题,而是没等我们看到这个“hello world”就被释放了,因此我们需要使用对象树来释放,让它的生命周期和窗口一样。

我们可以通过对QLable封装一下看到这个现状,下面是封装代码

注:为什么要用QDebug,因为使用C++的cout编码会和qt的编码冲突,打印乱码,而QDebug是qt的函数,会对字符编码集进行处理。

运行结果:

我们可以看到析构函数没有打印,代表还没有执行,那我们叉掉窗口试试

这就代表子对象析构是和父对象一起析构的,而且是窗口关闭后析构的,如果我们自己手动释放会怎么样呢?

这更加验证前面的话。

欧克,今天就到这里,如果有所收获的话记得点赞收藏哦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/71455.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习之-“深入理解梯度下降”

梯度下降是机器学习和深度学习的核心优化算法,几乎所有的模型训练都离不开它。然而,梯度下降并不是一个单一的算法,而是一个庞大的家族,包含了许多变体和改进方法。本文将从最基础的梯度下降开始,逐步深入学习&#xf…

力扣-字符串

字符串不能被修改,所以如果有想修改字符串的行为,需要转换为StringBuilder StringBuilder里也有很多封装方法String没有,比如reverse() StringBuilder sb new StringBuilder();// 添加字符串 sb.append("Hello"); sb.append(&qu…

flink重启策略

一、重启策略核心意义 Flink 重启策略(Restart Strategy)是容错机制的核心组件,用于定义作业在发生故障时如何恢复执行。其核心目标为: 最小化停机时间:快速恢复数据处理,降低业务影响。平衡资源消耗&…

Java TCP 通信:实现简单的 Echo 服务器与客户端

TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议。与 UDP 不同,TCP 保证了数据的顺序、可靠性和完整性,适用于需要可靠传输的应用场景,如文件传输、网页浏览等。本文将基于 Java 实现一个简单的…

Ollama+Deepseek-R1+Continue本地集成VScode

一、OllamaDeepseek-R1Continue本地集成VScode 1)安装前知识点 Continue 介绍 详情可参照官网: continue官网 Continue 是 Visual Studio Code 和 JetBrains 中领先的开源 AI 代码助手。 •在侧边栏中进行聊天以理解和迭代代码。 •自动补全&#…

风虎云龙R87与RH87八卡服务器震撼首发

在科技迅猛发展的今天,人工智能(AI)领域正以前所未有的速度改变着世界。从内容创作的智能化,到智能客服的广泛应用,AI技术已经深入到我们生活的方方面面。而这一切的背后,都离不开高性能算力设备的强大支撑…

18.分布式任务调度

固定的时间点去执行固定的任务,这就是任务调度。

Element UI-Select选择器结合树形控件终极版

Element UI Select选择器控件结合树形控件实现单选和多选&#xff0c;并且通过v-model的方式实现节点的双向绑定&#xff0c;封装成vue组件&#xff0c;文件名为electricity-meter-tree.vue&#xff0c;其代码如下&#xff1a; <template><div><el-select:valu…

多线程-定时任务线程池源码

定时任务线程池 ScheduledThreadPoolExecutor&#xff0c;可以执行定时任务的线程池。这里学习它的基本原理。 定时任务线程池&#xff0c;和普通线程池不同的地方在于&#xff0c;它使用一个延迟队列&#xff0c;延迟队列使用最小堆作为它的数据结构&#xff0c;它会按照任务…

系统盘还原成正常U盘

选择格式化,等格式化完毕就完了 点击还原设备的默认值格式化就完了

Linux系统下安装配置 Nginx 超详细图文教程_linux安装nginx

#安装当前路径下所有安装包 rpm -Uvh *.rpm --nodeps --force2.2、安装Nginx 找到Nginx的安装包进行解压 #解压安装包 tar -zxvf nginx-1.24.0.tar.gz进入解压之后的nginx目录下&#xff1a; #进入nginx目录 cd /usr/local/nginx-1.24.0执行配置脚本&#xff0c;–prefix是指…

【玩转正则表达式】替换与正则表达式的结合

在文本处理和数据分析的领域中&#xff0c;正则表达式&#xff08;Regular Expressions&#xff0c;简称regex&#xff09;是一种强大而灵活的工具。它能够帮助用户匹配、搜索、替换和编辑字符串中的特定模式。而光能匹配可能在实际使用场景中还不是很足够&#xff0c;有时候我…

如何排查服务器内存泄漏问题

服务器内存泄漏是一种常见的问题&#xff0c;可能导致系统性能下降甚至系统崩溃。以下是一般情况下用于排查服务器内存泄漏问题的步骤&#xff1a; 排查服务器内存泄漏问题的步骤&#xff1a; 监控系统资源&#xff1a; 使用系统监控工具&#xff08;如top、htop、free&#x…

Linux使用笔记:Find Tree 命令

Tree 命令的使用 使用-I 参数&#xff0c;过滤掉不想展未的目录或文件使用-L参数&#xff0c;指定展示的目录层级个数 arsenaltxzq1899:~/Workspace/vue-application$ tree -I node_modules/ -I public/ -L 2 . ├── components.json ├── Dockerfile ├── ecosystem.c…

山东大学计算机科学与技术学院软件工程实验日志

--- Author: "Inori_333" Date: 2025-03-04 --- 实验一 团队建立、阅读开源软件 1.队伍创建与分工 队伍最终确定由5人组成&#xff0c;小组成员之间进行了高效的沟通&#xff0c;并确定了各自的负责的部分内容。 2.代码复现与分析 写在前面&#xff1a;由于“…

深入 Vue.js 组件开发:从基础到实践

深入 Vue.js 组件开发&#xff1a;从基础到实践 Vue.js 作为一款卓越的前端框架&#xff0c;其组件化开发模式为构建高效、可维护的用户界面提供了强大支持。在这篇博客中&#xff0c;我们将深入探讨 Vue.js 组件开发的各个方面&#xff0c;从基础概念到高级技巧&#xff0c;助…

历年杭州电子科技大学计算机考研复试上机真题

历年杭州电子科技大学计算机考研复试机试真题 在线评测&#xff1a;https://app2098.acapp.acwing.com.cn/ 最大公约数和最小公倍数 题目描述 输入两个正整数 m 和 n&#xff0c;求其最大公约数和最小公倍数。 输入格式 两个整数 输出格式 最大公约数&#xff0c;最小公…

单片机入门(一)

一、单片机的内部资源 Flash&#xff1a;程序存储空间 RAM&#xff1a; 数据存储空间 SFR: 特殊功能寄存器的简称。它存在于单片机的内部存储空间中&#xff0c;用于存储控制单片机各种硬件模块工作的数据。这些寄存器具有特定的功能&#xff0c;控制着单片机的各种操作&#…

将 MySQL 数据高效导入 Redis

目录 1. RESP 协议 &#xff08;1&#xff09;RESP 协议的优点 &#xff08;2&#xff09;RESP 支持的 5 种数据类型 &#xff08;3&#xff09;RESP 的用途 &#xff08;4&#xff09;RESP 协议示例 2. redis-cli 的 pipe 模式 &#xff08;1&#xff09;pipe 模式的作…

mybatis映射文件相关的知识点总结

mybatis映射文件相关的知识点总结 mybatis官网地址 英文版&#xff1a;https://mybatis.org/mybatis-3/index.html 中文版&#xff1a;https://mybatis.p2hp.com/ 搭建环境 /* SQLyog Ultimate v10.00 Beta1 MySQL - 8.0.30 : Database - mybatis-label *****************…