当QHash遇到字节对齐的quint64结构
1. 测试代码
main.cpp
#include <QCoreApplication>
#include <QHash>
#include <QSysInfo>
#include <QDebug>
#pragma pack(push, 1)
struct Data
{
quint64 value;
};
#pragma pack(pop)
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Data data;
data.value = 1;
QHash<int, Data> errorHash;
errorHash[1] = data;
qDebug() << QSysInfo::kernelType() << ", data.value" << data.value << "errorHash[1].value" << errorHash[1].value;
return a.exec();
}
2. 测试结果
debug_error.png
result_right.png
3. 结论
- windows下,当结构中包含quint64类型变量时,当过1字节对齐后,作为hash的值时,debug时显示的值不对,但从打印的结果来看没有问题,不知道为啥,可能有坑,需要特别注意
网友评论