结构体长度sizeof 与 实际计算的各部分的和 不同的问题
结构体分配空间时会自动填充空间,所以会存在插入空的地址空间。
//取消窗口标题框
Qt::WindowFlags ture=Qt::Dialog;
ture |=Qt::WindowMinimizeButtonHint;
ture |=Qt::WindowMaximizeButtonHint;
ture |= Qt::WindowCloseButtonHint;
setWindowFlags(ture);
//查看结构体长度,以及各个部分的偏移
qDebug()<<sizeof(eth_info_package);
qDebug()<<offsetof( eth_info_package,dHeadSym)<<offsetof( eth_info_package,status_items)<<offsetof( eth_info_package,dev_status);
s_test *param = (s_test*)malloc(sizeof(dev_status_param));
memset(¶m, 0, sizeof(dev_status_param));
qDebug()<<(unsigned long)(¶m->a)<<(unsigned long)(¶m->b)-(unsigned long)(¶m->a)<<(unsigned long)(¶m->c)-(unsigned long)(¶m->a)<<(unsigned long)(¶m->framedata)-(unsigned long)(¶m->a);
//解决办法
#pragma pack(push)//保存字节对齐数
#pragma pack(1)//设定对齐字节数为1
struct{
......
};
#pragma pack(pop)//恢复对齐字节数
参考地址:结构体长度问题