千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:郑州千锋IT培训  >  技术干货  >  对于QFile,delete,deletelater(),close()有什么区别?

对于QFile,delete,deletelater(),close()有什么区别?

来源:千锋教育
发布人:xqq
时间: 2023-10-19 08:38:10

一、QFile,delete,deletelater(),close()的区别

delete 是C++的内存释放,会调用QFile的析构函数,但是析构函数中有没有默认close打开的文件。

deletelater是Qt Object元对象系统提供的对象删除函数,也会调用delete释放对象,但是会在一个事件循环结束后释放(Qt Event Loop),可以理解为把这个对象加入了一个待释放队列,Qt事件循环完成后会去释放这个对象的内存,建议不理解机制别乱用,程序复杂了崩溃都不知道怎么去查。

返回到事件循环后,调用deleteLater()的对象才会被销毁,否则不执行。

如果线程中没有运行着的事件循环,线程中的对象调用了deleteLater(),当线程结束后对象才被销毁。当名列前茅次QDeferredDeleteEvent传递给事件循环后,对象的任何待处理事件(pending events)都从事件队列中移除。

Qt中不建议手动delete掉QObject对象。原因一:不注意父子关系会导致某个对象析构两次,一次是手动析构,还有一次是parent析构,后者可能会出现delete堆上的对象。

延伸阅读:

二、QFile文件如果不存在则创建的方法

QFile f(./1234.ini”);

if(!f.open(QIODevice::Append))

{

return 0;

}

open里的打开模式为QIODevice::WriteOnly、QIODevice::ReadWrite、QIODevice::Append这三种的话,文件不存在则会自动创建出一个空文件出来。其他打开模式就不行。已测试。

open打开的几种模式如下:

QIODevice::ReadOnly 以只读方式打开文件

QIODevice::WriteOnly 只写方式

QIODevice::ReadWrite 读写方式

QIODevice::Append 追加模式打开,新写入文件的数据添加到文件尾部

QIODevice::Truncate 截取方式打开文件,文件原有的内容全部被删除

QIODevice::Text文本方式打开文件,读取时“\n”被自动翻译为换行符

这些取值可以用“|”组合使用,例如 QIODevice::ReadOnly | QIODevice::Text 表示以只读和文本方式打开文件。

以上就是关于对于QFile,delete,deletelater(),close()有什么区别的内容希望对大家有帮助。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

职能管理与流程管理的区别是什么?

2023-10-19

端口测试用例怎么写?

2023-10-19

重大项目如何推进?

2023-10-19

最新文章NEW

为什么leetcode不支持php语言?

2023-10-19

golang的context和net.Conn怎么结合使用比较好?

2023-10-19

有什么免费的PDF翻译工具?11款免费翻译工具推荐?

2023-10-19

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>