C语言结构体对齐问题
原创
©著作权归作者所有:来自51CTO博客作者qqtang797的原创作品,请联系作者获取转载授权,否则将追究法律责任
C语言中为了保证结构体的运算速度,对结构体进行了对齐操作,默认对齐字节数是按照结构体中占用字节数最大的简单数据成员算的,结构体中的结构体不算是简单数据成员,简单数据成员包括char、int、short、long、long long、float、double以及他们的unsigned形式(如果有)。
使用#pragma pack(n)可以让结构体按照指定的n字节对齐,但是如果n大于结构体中的最大简单数据成员的长度,则对齐还是以最长简单数据成员的长度为标准。使用#pragma pack()可以取消自定义的对齐方式恢复成默认对齐方式。
上一篇:Linux top命令详解
下一篇:C语言编译过程
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
结构体:修改默认对齐数、结构体传参——《初学C语言第45天》
修改默认对齐数、结构体传参
修改默认对齐数 结构体传参 -
结构体大小计算-结构体对齐
计算某一结构体大小:方法以及规则。
偏移量 #pragma 结构体 结构体大小计算 -
C++结构体对齐
现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但
c++ 编译器 struct alignment 平台 -
c语言那些细节之结构体字节对齐
相信很多人学c的时候就不知道c中还有位域这么一说,自认为c学得还行,可是
数据类型 位域 #pragma -
结构体对齐
结构体对齐
c 结构体对齐 -
C语言 结构体(联合体)对齐规则
结构体对齐规则,结构体说明
数据 基本类型 编译器 #include 数据类型