我可以制作一个结构,其中超过一半的空间是填充的吗?

标签 c struct structure padding

我刚刚开始学习结构中的填充。那么,我可以用一个字符(1 个字节)创建一个结构,而不是填充 3 个字节,这样理解是否正确?

最佳答案

通常,C 实现不会填充包含单个单字节成员的结构。可以使用标准 _Alignas 关键字或其他方式强制执行更严格的对齐,在这种情况下,结构可能包含比数据更多的填充。

但是,我们可以创建填充多于数据的普通结构。考虑 struct { char a;双b;字符 c; } 在 C 实现中,其中 double 是八个字节并且需要八字节对齐。要布置此结构,实现必须在 ab 之间插入(至少)七个字节的填充,并且必须在 c 之后再插入(至少)七个字节 使结构大小成为八字节的倍数(这是必需的,以便此类结构数组中的元素保持其所需的对齐方式)。

这个结构在其成员中有十个字节的数据和十四个字节的填充。

关于我可以制作一个结构,其中超过一半的空间是填充的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58661032/

相关文章:

c - findString 函数返回错误值

c++ - C++ 中的结构填充

c++ - 如何将结构拆分为 block 以便将字节保存到 C/C++ 中的另一个数据结构?

c++ - 取消声明函数中使用的结构成员?

excel - 我如何告诉 Matlab 正在导入的某些数据是十六进制的?

c - 如何将文件夹位置作为 C 中此文件夹锁定代码的输入?

c - C 如何计算这个表达式? C指针

clang:-fsanitize=undefined 有 128 次整数运算( undefined reference `__muloti4')

c - 处理 C 中的结构函数 - 可以输入数组,但不能输入 int

c - 结构C编程需要解释,看不懂代码