关于QT C++ 在debug 模式和Release模式下对QByteArray赋值的差异化实践记录

Posted wyj372

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于QT C++ 在debug 模式和Release模式下对QByteArray赋值的差异化实践记录相关的知识,希望对你有一定的参考价值。

一、问题描述
    在debug模式一,定义了QByteArray变量,默认是空值 00000000,但是release下确是一个随机值
QByteArray   pak_id_,timestamp_,;
pak_id_.resize(2);         
timestamp_.resize(4)

二、我们来做一个Demo测试

      使用下面的代码

    //验证 QByteArray在debug与release模式下产生值不同
    QByteArray temp01;
    QByteArray temp02;
    temp01.resize(2);
    temp02.resize(2);
    //qDebug()<<"pak"<<pak_id_.toHex()<<endl;
    qDebug()<<"temp01: " <<  temp01.toHex() << "temp02:" <<temp02.toHex() ;


//    函数:tohex 字符串转码
//    函数名称:字符串转码
//    函数功能:转码,字符串转换为十六进制编码
//    函数方法
//    str2 = str1:tohex()
//    参数	类型	必填	说明
//    str1	string	是	字符串内容
//    返回值	类型	说明
//    str2	string	十六进制内容

随意创建一个空项目 如:

三、先用debug模式 执行两次

四、再用release 执行两次

 

五、结论

  输出 结果

           

14:19:05: Starting D:\\workspace\\QByteArrayDemo\\build-QByteArrayDemo-Desktop_Qt_5_14_2_MSVC2017_64bit-Debug\\debug\\QByteArrayDemo.exe ...
1127, FromFilemap
14:19:09: D:\\workspace\\QByteArrayDemo\\build-QByteArrayDemo-Desktop_Qt_5_14_2_MSVC2017_64bit-Debug\\debug\\QByteArrayDemo.exe exited with code 0

14:19:32: Starting D:\\workspace\\QByteArrayDemo\\build-QByteArrayDemo-Desktop_Qt_5_14_2_MSVC2017_64bit-Debug\\debug\\QByteArrayDemo.exe ...
temp01:  "cdcd" temp02: "cdcd"
1127, FromFilemap
14:19:58: D:\\workspace\\QByteArrayDemo\\build-QByteArrayDemo-Desktop_Qt_5_14_2_MSVC2017_64bit-Debug\\debug\\QByteArrayDemo.exe exited with code 0

14:21:10: Starting D:\\workspace\\QByteArrayDemo\\build-QByteArrayDemo-Desktop_Qt_5_14_2_MSVC2017_64bit-Debug\\debug\\QByteArrayDemo.exe ...
temp01:  "cdcd" temp02: "cdcd"
1127, FromFilemap

  根据上面的结果 可以看出,在debug模式下,2位的QbyteArray输出的是相同的值,但是在release下,输出的时随机值,

至于这个特性,是bug,还是在生产中有实用性,暂时还在探索中,至此做个记录,以便后续叠加追踪,如果有了解这个东东的兄弟也可以留言

下载相关 demo

https://download.csdn.net/download/wyj372/87635857

以上是关于关于QT C++ 在debug 模式和Release模式下对QByteArray赋值的差异化实践记录的主要内容,如果未能解决你的问题,请参考以下文章

Qt Creator 程序调试

QT多插件通信框架CTK编译记录

QT多插件通信框架CTK编译记录

QT多插件通信框架CTK编译记录

VS2015创建的C++程序在Debug模式下不能调试

Qt 串口的 C++ 线程模式