gpt4 book ai didi

c - 任何数据结构的大小都可以被 int 的大小整除吗?

转载 作者:行者123 更新时间:2023-12-04 01:13:27 26 4
gpt4 key购买 nike

由于数据对齐,我能否保证任何数据结构的大小都可以被 int 的大小整除?我没有找到有关如何在编译前猜测数据结构大小的信息。

最佳答案

一般来说,你不能做出这样的假设:

  • 如果 sizeof(int) == 1,则所有结构的大小都是 sizeof(int) 的倍数。一些 DSP 芯片就是这种情况。

  • 否则,在绝大多数架构上,大小可以是任意的,例如 struct A { char c; 的大小 可能是 1,它不是 sizeof(int) 的倍数。

  • 如果该结构确实有一个不是位域的 int 成员,并且没有显式或隐式声明为打包,带有编译器特定扩展,您可以假设它的大小是 _Alignof(int) 的倍数并且其自身的对齐至少与 _Alignof(int) 一样大。对于任何成员类型(位域除外)都是如此。请注意,它不一定使大小成为 sizeof(int) 的倍数。

  • 请参阅 this answer 中通常如何确定结构对齐方式作者:Eric Postpischil。

  • 另请参阅 why does size of the struct need to be a multiple of the largest alignment of any struct member .

关于c - 任何数据结构的大小都可以被 int 的大小整除吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64078171/

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