首页 > 其他分享 >QT技巧 - QT中如何确定new对象是否要释放(转)

QT技巧 - QT中如何确定new对象是否要释放(转)

时间:2023-01-07 18:11:58浏览次数:57  
标签:释放 QT 对象 QObject new 父类 技巧

##1.前言

我们都知道C++中的new和delete是需要成对存在的,否则会导致内存泄漏。但是,在QT中,有的时候我们new出来的对象,并不需要delete也会释放掉。那么,究竟什么时候需要手动释放,什么时候不需要释放,交给QT自动释放呢?

##2.QT的自动释放机制
在QT基础 - QObject简介一文中提到:
QObject在对象树中组织自己。当你用另一个对象作为父对象创建一个QObject时,对象将自动添加到父对象的children()列表中。父母拥有对象的所有权;即它会自动删除其子析构器中的子元素。

因此,我们可以得出如下结论:
当且仅当一个对象满足如下条件:
1.该对象是QObject的派生类
2.该对象的父类不为NULL
那么,该对象的父类删除时,该对象会被自动删除,无需手动释放。

##3.结论
当且仅当一个对象满足如下条件:
1.该对象是QObject的派生类
2.该对象的父类不为NULL
那么,该对象的父类删除时,该对象会被自动删除,无需手动释放。
————————————————
原文链接:https://blog.csdn.net/itas109/article/details/79977912/

标签:释放,QT,对象,QObject,new,父类,技巧
From: https://www.cnblogs.com/xihong2014/p/17033138.html

相关文章

  • 简单测试qt通过odbc方式连接mysql8数据库
    下载数据库mysql8.0.27,SQLyog,mysql-connector-odbc强烈推荐从镜像下载mysql-connector-odbc-8.0.27-winx64.msi​​​https://mirrors.tuna.tsinghua.edu.cn/mysql/do......
  • Qt中用thrift验证flume
    一.flume简介flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。在flume中分为了3个组件,分别为source,channel和sink。Source是负责接收......
  • ubunut安装qtcreater
    安装gcc1kxb@kxb:~$gcc-v23Command'gcc'notfound,butcanbeinstalledwith:45sudoaptinstallgcc67kxb@kxb:~$sudoaptinstall......
  • 模型中线对齐方法【技巧】
    在三维建模过程中,为了加快工作效率,我们经常使用特殊复制的方式来完成模型制作。但是,操作不规范和意外经常会导致模型对不齐和出现缝隙的情况,像这样:其实,这个问题很好解决,......
  • QT信号与槽使用自定义数据类型的参数引发的问题
    1.发现问题今天使用信号与槽遇到一个这样的问题,我自定义了一个信号类型:signals:voidupdate_product_info(int,ProductInfoSign);ProductInfoSign的定......
  • Differences between the John Deere EDL v2 and the new EDL v3
    TheJohnDeerediagnosticadapterforthediagnosisofspecialequipmentandagriculturalmachineryJohnDeereandworksinconjunctionwiththeServiceAdviso......
  • Qt音视频开发10-ffmpeg内核硬解码
    一、前言为了极大的降低CPU的占用,实现硬解码(也叫硬件加速)非常有必要,一个视频文件或者一路视频流还好,如果增加到64路视频流呢,如果是4K、8K这种高分辨率的视频呢,必须安装上......
  • 23、electron 报Fatal error in V8: v8_ArrayBuffer_NewBackingStore When the V8 San
    electron报FatalerrorinV8:v8_ArrayBuffer_NewBackingStoreWhentheV8Sandboxisenabled,ArrayBufferbackingstoresmustbeallocatedinsidethesandboxa......
  • Qt中使用c#和std的mutex出现冲突
    本人想在Qt项目中使用c#的一些功能,Qt代码中原本用的std::mutex。pro文件添加上托管编译后,一编译就报错:std里面没有mutex.一开始以为是std冲突,但是怎么改都没用,包括修改头......
  • S2 - Lesson 15 - Good news
    Words secretsecretary nervous[紧张的]nerveirritable[易怒的]  affordcan/beableto+afford+sth./todosth.Thefirmcouldnotaffordtopaysu......