美文网首页工作
当QHash遇到字节对齐的quint64结构

当QHash遇到字节对齐的quint64结构

作者: dhz120 | 来源:发表于2019-03-07 08:51 被阅读0次

当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时显示的值不对,但从打印的结果来看没有问题,不知道为啥,可能有坑,需要特别注意

相关文章

  • 当QHash遇到字节对齐的quint64结构

    当QHash遇到字节对齐的quint64结构 1. 测试代码 main.cpp 2. 测试结果 3. 结论 win...

  • c语言结构体对齐

    1.什么是字节对齐 结构体里面一般会按照某种规则去进行字节对齐默认规则如下:对齐是按照结构体中长度最长的变量来对齐...

  • iOS 技术

    结构体的字节对齐和OC对象的字节对齐? instance(实例对象)、class(类对象)、meta-class(...

  • 第一天,内存对齐

    一对齐规则: 1.非结构体类型 32位 4字节对齐,64位 8字节对齐 2.结构体类型 以结构体中,最大内存的整数...

  • 结构体 字节对齐的练习

    结构体 字节对齐的练习 分析结构体大小struct S1 ...

  • 结构体字节对齐

  • 结构体字节对齐

    结构体字节对齐 在定义结构体时,会发现结构体的大小有时是成员的字节大小相加,有时候又比成员的字节数相加大。这就涉及...

  • 字节对齐

    为什么字节对齐: 体系结构的对齐和不对齐,是在时间和空间上的一个权衡。对齐节省了时间。假设一个体系结构的字长为w,...

  • 结构体内存对齐

    不同数据类型占用字节图 内存对齐的原则 1、数据成员对齐规则: 结构(struct)(或联合(union)的)数据...

  • iOS 一字节对齐

    一字节对齐的写法 #pragma pack(1) 结构体 #pragma pack() __attribute__...

网友评论

    本文标题:当QHash遇到字节对齐的quint64结构

    本文链接:https://www.haomeiwen.com/subject/mesqpqtx.html