关于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,还是在生产中有实用性,暂时还在探索中,至此做个记录,以便后续叠加追踪,如果有了解这个东东的兄弟也可以留言
https://download.csdn.net/download/wyj372/87635857
以上是关于关于QT C++ 在debug 模式和Release模式下对QByteArray赋值的差异化实践记录的主要内容,如果未能解决你的问题,请参考以下文章