码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Qt QJsonObject初始化列表的使用问题


    在VS2013+Qt5.9.7上,QJsonObject的初始化列表构造函数有BUG

    QJsonObject::QJsonObject(std::initializer_list<QPair<QString, QJsonValue> > args)
    
    • 1

    注:使用初始化列表前先要开启编译选项Q_COMPILER_INITIALIZER_LISTS
    以下代码Debug异常

    	QJsonObject object = {
    		{ "1", 1 },
    		{ "2", 3 },
    		{ "3", 1.5 },
    		{ "4", 0.7 },
    		{ "5", false }
    	};
    	QString js = QJsonDocument(object).toJson();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    _BLOCK_TYPE_IS_VALID(pHead-> nBlockUse),内存异常
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在initializer_list vs 2013中双重删除,这个帖子提到了析构的问题

    initializer_list行为是错误的.在它的析构函数中,它调用整个范围的向量删除(delete []),然后再次删除数组中的第一个条目.此行为不是initializer_list类的一部分,看起来像编译器错误.initializer_list没有析构函数,也没有分配用于列表的数组.它看起来像C数组的包装器.

    在VS2015+Qt5.12.7上同样的代码没有问题,比较了两者的源代码差不多:
    VS1023
    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\initializer_list、C:\Qt\Qt5.9.7\5.9.7\Src\qtbase\src\corelib\json\qjsonarray.h

    VS2015

    C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\initializer_list、C:\Qt\Qt5.12.7\5.12.7\Src\qtbase\src\corelib\serialization\qjsonarray.h

    目前猜测是因为VS2013对C++11初始化列表特性支持不够完整,相关的讨论见
    VS 2015 update 1比VS 2013 update 5新增了哪些C++11/14特性、
    (N2672)Initializer List proposed wording、
    Q_COMPILER_INITIALIZER_LISTS is not set for VisualStudio 2013

    结论,Qt+VS2013尽量别使用初始化列表(虽然QVector、QMap的初始化列表是可以正常使用),特别是Json相关的接口

  • 相关阅读:
    OpenCV(三十九):积分图像
    Blazor 发布WebAssembly使用Brotli 压缩提升初次加载速度
    变电站监控视频中运动异常运动物检测和跟踪技术的研究
    GIT | git只上传文件夹目录,不监控目录里面的文件的解决方法
    CentOS7部署Docker(联网)
    题目0095-删除指定目录
    Ubuntu server 22.04 安装kvm
    Elasticsearch高级检索之使用单个字母数字进行分词N-gram tokenizer(不区分大小写)【实战篇】
    使用 DDPO 在 TRL 中微调 Stable Diffusion 模型
    Selenium-下拉选择框、弹出框、滚动条操作
  • 原文地址:https://blog.csdn.net/Kelvin_Yan/article/details/127901234
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号