C/C++结构体内存对齐
ZC: 注意点:
ZC: (1)、不同的编译器 对结构体(“struct”和“typedef struct”)的内存对齐 可能不同;
ZC: (2)、关键词“__packed”,网上查到 可以使用这个,但是我没有尝试成功,不知 如何使用...
测试环境:Win7x64,cn_visual_studio_2010_ultimate_x86_dvd_532347.iso,qt-opensource-windows-x86-msvc2010_opengl-5.3.2.exe
1、
1.1、测试代码:
#pragma pack (1)//指定按2字节对齐/ struct struct01 { int i; short us; }; typedef struct { int i; short us; } struct02; struct struct03 { short us; int i; }; typedef struct { short us; int i; } struct04; #pragma pack ()//取消指定对齐,恢复缺省对齐/ struct struct05 { int i; short us; }; typedef struct { int i; short us; } struct06; struct struct07 { short us; int i; }; typedef struct { short us; int i; } struct08; void MainWindow::on_pushButton_clicked() { qDebug() << "sizeof(struct01) : " << sizeof(struct01); qDebug() << "sizeof(struct02) : " << sizeof(struct02); qDebug() << "sizeof(struct03) : " << sizeof(struct03); qDebug() << "sizeof(struct04) : " << sizeof(struct04); qDebug() << "sizeof(struct05) : " << sizeof(struct05); qDebug() << "sizeof(struct06) : " << sizeof(struct06); qDebug() << "sizeof(struct07) : " << sizeof(struct07); qDebug() << "sizeof(struct08) : " << sizeof(struct08); }
1.2、控制台输出:
sizeof(struct01) : 6
sizeof(struct02) : 6
sizeof(struct03) : 6
sizeof(struct04) : 6
sizeof(struct05) : 8
sizeof(struct06) : 8
sizeof(struct07) : 8
sizeof(struct08) : 8
2、
3、
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 协程本质是函数加状态机——零基础深入浅出 C++20 协程
· 编码之道,道心破碎。
· 记一次 .NET 某发证机系统 崩溃分析
· 微服务架构学习与思考:SOA架构与微服务架构对比分析
· tomcat为什么假死了
· 知名开源项目Alist被收购!惹程序员众怒,开团炮轰甲方
· 突发,小红书开发者后门被破解?!
· 历时半年,我将一个大型asp.net的零代码快速开发平台转成了java
· [原创]《C#高级GDI+实战:从零开发一个流程图》第03章:画一个线,连接两个矩形!
· C# 将 CSV 转化为 Excel