提供
Demo 下载 无法理解,以至于吓得我不敢写代码了,因为太恐怖了。
先说下环境:vs2019,Win11,x64,cpu 锐龙R7
这是一个很正常的类,用一个结构体保存着数据 诡异的情况出现了 我无法理解,
没有修改 p
指针的内容,前后两次输出仅仅只是 new 了一个类,数据就没了(或是缺少
部分字符)!
针对这个现象,我继续做了几个试验:
1,如果 Data 结构体
比较小,例如把 char inf[1000] 的 1000 改成 100,那么异常发生的概率就会减少(50%)
2,如果 Nib 里的 m_data 没有初始化,例如没有 m_data{0} 后面的 {0},异常发生的概率极少。
3,即使换种方法初始化,例如在 Nib 的构造函数里用 memset(&m_data,0,sizeof(m_data)); 这种异常也是大概率发生的。
untitled.7z (2 K) 下载次数:3 举例 为什么我要将数据保存在 QVariant 中?
这个 Demo 只是我复现该 bug 精简的。
实际情况是:
程序的初始会载入配置
文件,将配置信息构建成 QMap<QString,QVariant>,key-value 形式
值种类比较多,有的是
QString,有的是 int,遇到结构体数据,就用
QByteArray,所以 value 统一用 QVariant