大多数系统(如 32/64 位)会按最宽成员的对齐要求来对齐结构体。所以总大小是最宽成员数据类型的整数倍;
如最宽的成员是 double d(8 字节),所以结构体通常按 8 字节对齐,所以总大小为8*x;
成员的对齐规则:
-
每个成员的偏移地址必须能被其自身大小整除。
-
结构体的总大小必须是最宽成员大小的整数倍。
c 语言结构体空间 计算是以最大元素为单元开辟空间,从第一个元素 按4字节对齐开始往里放,如果能放下就放,放不下就开辟新空间;
如




大多数系统(如 32/64 位)会按最宽成员的对齐要求来对齐结构体。
这里最宽的成员是 double d(8 字节),所以结构体通常按 8 字节对齐。
成员的对齐规则:
-
每个成员的偏移地址必须能被其自身大小整除。
-
结构体的总大小必须是最宽成员大小的整数倍。

参考2:https://www.cnblogs.com/adamjwh/p/5828059.html
参考3:C语言结构体,共用体所占字节数计算_又又爱拍照的博客-优快云博客_共用体变量所占内存长度是
STM32 终极字节对齐解析_嗒曦的博客-优快云博客_stm32 字节对齐
本文探讨了C语言中结构体的空间计算策略,重点在于如何根据最大元素以4字节对齐,并在需要时动态扩展空间,确保有效内存使用。理解这一过程对于优化程序性能至关重要。
926

被折叠的 条评论
为什么被折叠?



