当前位置: 首页 > news >正文

QT对QBytearray的data()指针进行结构体转换时会自动字节对齐填充

1、测试代码

#include <QCoreApplication>#pragma pack(push, 1)
typedef struct
{int a;float b;char c;int *d;
}testStruct;
#pragma pack(pop)#include <QByteArray>
#include <QDebug>int main()
{testStruct structA;structA.a = 1;structA.b = 2;structA.c = 'a';structA.d = new int[10];for (int i = 0; i < 10; ++i) {structA.d[i] = i;}QByteArray arr;arr.resize(49);memcpy(arr.data(), &structA, 9);memcpy(arr.data() + 9, structA.d, 40);// testStruct *sb = reinterpret_cast<testStruct *>(arr.data());testStruct *sb = (testStruct*)arr.data();sb->d = reinterpret_cast<int *>(arr.data() + 9);;for (int i = 0; i < 10; ++i) {qDebug() << sb->d[i];}return 0;
}

2、输出结果

40642209
0
2
3
4
5
6
7
8
9

3、发现

经过调试指针转换后,发现本来设置的1字节对其变成了4字节对齐
QBytearray的data()指针被转换后会按照4字节自动对齐填充,不知为何会这样
在这里插入图片描述> 在这里插入图片描述


http://www.mrgr.cn/news/39833.html

相关文章:

  • Electron 进程通信
  • 高效视频编码标准H.265介绍,以及H.265在视频监控共享平台中的应用
  • 全解析:如何评估PLM系统的性价比?
  • 仕考网:事业单位考试选岗小技巧!
  • 【含文档】基于Springboot+Vue的工资管理系统(含源码+数据库+lw)
  • 用责任链模式改造 if else
  • 达力士得肤宝与生物制剂在银屑病中的搭配使用
  • 测试开发面试题:浏览器输入url之后的过程
  • Find My储物盒|苹果Find My技术与储物盒结合,智能防丢,全球定位
  • GIS中的投影坐标系
  • 数商云B2B2C商城系统如何帮企业降本增效
  • 敏感内容识别是如何实现的?5大妙招教你快速筛选敏感词!
  • 经典文献阅读之--WiROS(用于机器人的WiFi感知工具箱)
  • 通过PHP获取商品详情
  • Chris,36岁勇辞管理,重回开发:一场高龄远程工作者有违常理的自我追寻。
  • Python字典推导式
  • H.264编解码 - NALU详解
  • opencv实战项目(三十):使用傅里叶变换进行图像边缘检测
  • 算法竞赛C++基础
  • 关于国内节点和海外节点的区别,这些要了解