gpt4 book ai didi

c - 调整结构中的内存对齐

转载 作者:太空宇宙 更新时间:2023-11-04 08:06:04 25 4
gpt4 key购买 nike

我知道结构中的内存对齐,但我对在我正在从事的项目中遇到的这种实现感到困惑。

struct default {
uint8_t variable[((sizeof(struct dummyStructure) + 3) /4)*4] // Align on 32 bit boundary
}

目前对我来说它更像是一个黑盒测试,因为我无法访问这些函数,但任何人都可以解释这里使用的数学来导致这种对齐发生。

最佳答案

你的问题的答案是,通过将 3 添加到 dummyStructure 的大小并将除以 4 的结果的整数部分乘以 4,你将有:

  1. dummyStructure 的确切大小,如果它对齐到 32 位(或它的任何倍数,例如 64 位)。
  2. 或者大于 dummyStructure 大小的 32 位的第一个倍数。

因此它总是会产生一个 4 字节可整除的数字(32 位对齐)。

例子:

如果 dummyStructure 的大小为 8 个字节,则结果为 ((8 + 3)/4)*4 = 8。

现在,如果 dummyStructure 的大小为 11,则结果将为 ((11 + 3)/4)*4 = 12。

不过,我只是想知道开发人员为什么决定这样做,因为 dummyStructure 应该始终根据处理器架构对齐。

关于c - 调整结构中的内存对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42842988/

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