当前位置: 首页 > news >正文

7对象树(1)

目录

QLabel* label = new Qlabel(this)会出现内存泄露吗

上述代码,在 Qt 中不会产生内存泄露label 对象会合适的时候被析构释放~~(虽然没有手动写 delete,确实能释放)之所以能够把对象释放掉,主要是因为把这个对象是挂到了对象树上

试想一下,如果这个对象是按照 栈上 的变量创建的就可能会存在一些“提前释放”的问题

当把对象改成在栈上创建,此时就可以看到,运行起来的程序

无法显示出 hello world此时 label 对象随着构造函数的结束就销毁了

使用对象树,把这些内容组织起来,最主要的目的,就是为了能够在合适的时机(窗口关闭/销毁),把这些对象统一进行释放通过这个树形结构,就把界面上要显示的这些控件对象都组织起来了 


QLabel* label = new Qlabel(this)会出现内存泄露吗

这个代码, new 了对象之后, 咋没有 delete 呢?
不 delete 不就出现内存泄漏了吗??

上述代码,在 Qt 中不会产生内存泄露
label 对象会合适的时候被析构释放~~(虽然没有手动写 delete,确实能释放)
之所以能够把对象释放掉,主要是因为把这个对象是挂到了对象树上

此处参数(this):

此处通过 new 的方式创建对象,也就是为了把这个对象的
生命周期,交给 Qt 的对象树来统一管理

试想一下,如果这个对象是按照 栈上 的变量创建的
就可能会存在一些“提前释放”的问题

当把对象改成在栈上创建,此时就可以看到,运行起来的程序

无法显示出 hello world
此时 label 对象随着构造函数的结束就销毁了

前端开发(网页开发)也涉及到 类似的 对象树(DOM)本质上也是一个树形结构( N叉树),通过树形结构把界面上的各种元素组织起来.

Qt 中也是类似,也是搞了一个对象树,也是 N 叉树,把界面上的各种元素组织起来了.~~

使用对象树,把这些内容组织起来,最主要的目的,就是为了能够在合适的时机(窗口关闭/销毁),把这些对象统一进行释放
通过这个树形结构,就把界面上要显示的这些控件对象都组织起来了 

这里的树上的这些对象,统一销毁是最好不过的
如果某个对象提前销毁,此时就会导致对应的控件就在界面上不存在了

相关文章:

  • 文本分析(非结构化数据挖掘)——特征词选择(基于TF-IDF权值)
  • Java项目打包(使用IntelliJ IDEA打包Java项目)
  • Ubuntu 22.04 LTS 下载英伟达驱动
  • 买家利益为中心的购物平台
  • 每日一题洛谷P8716 [蓝桥杯 2020 省 AB2] 回文日期c++
  • Mapbox GL JS 实现鼠标绘制矩形功能的详细代码和讲解
  • C++ | std::function
  • Spring Boot中对同一接口定义多个切面的示例,分别通过接口方式和注解方式实现切面排序,并对比差异
  • 基于方法分类的无监督图像去雾论文
  • 小白入门机器学习概述
  • 128. 最长连续序列
  • 树莓派超全系列文档--(18)树莓派配置音频
  • 快速入手:基于SpringBoot的Dubbo应用融合Nacos成为注册中心
  • 工业机器人核心算法体系解析:从感知到决策的技术演进
  • Ubuntu 系统 Docker 中搭建 CUDA cuDNN 开发环境
  • 鸿蒙应用元服务开发-Account Kit概述
  • Raspberry 树莓派 CM4模块的底板设计注意事项
  • 运维简历之项目经验(Project Experience in Pperation and Maintenance Resume)
  • InfiniBand (IB)和 以太网 的区别
  • 《孟婆汤的零知识证明加密术》
  • 湛江网站建设公司/如何做推广推广技巧
  • 网站快照出现两个/2345网址导航中国最好
  • 什么叫营销型网站/seo管理系统创作
  • php做网站要用到的技术/种子搜索引擎torrentkitty
  • 做百度手机网站优化点/湖南有实力seo优化哪家好
  • wap网站的开发/滨州网站建设