gpt4 book ai didi

c - 结构的 `alignof` 是否总是其成分的最大值 `alignof`?

转载 作者:行者123 更新时间:2023-12-01 13:30:49 25 4
gpt4 key购买 nike

我在玩简单的例子时注意到,alignof(struct_name) 始终是其结构的最大 alignofalignof成分。情况总是(或几乎总是)如此吗?

最佳答案

Is the alignof of a struct always the maximum alignof of its constituents?

alignof 宏扩展为 _Alignof 运算符,它计算其操作数的对齐要求。如何确定对齐要求的大部分方面都是由实现定义的,因此从这个意义上说,假设您的提议始终或什至通常成立是不安全的。

但是,您观察到的模式仍然很常见。为了实现确保给定结构类型的每个实例的每个成员都根据该成员类型的对齐要求对齐,实现必须为至少与结构类型一样大的整体结构类型选择对齐要求其任何成员的最大对齐要求。另一方面,选择尽可能小的对齐要求有助于有效使用内存。这些组合导致您观察到的对齐行为。

不过,我重申,对齐要求在很大程度上是由实现定义的。即使不考虑 _Alignas 运算符的影响,实现也没有义务根据您的模式选择结构对齐要求。例如,一个实现可以选择(至少)为每个结构类型分配最大的基本对齐,而不考虑其成员类型。

然而,最终,人们不得不怀疑你为什么关心。您需要知道或应该取决于类型的对齐要求的情况很少见,尽管并非闻所未闻。在确实需要特定对齐要求的地方,直接声明它比尝试使用成员的类型来影响它要好得多。

关于c - 结构的 `alignof` 是否总是其成分的最大值 `alignof`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46009715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com