【问题标题】:Default Alignment of structure members结构成员的默认对齐方式
【发布时间】:2016-02-20 01:14:28
【问题描述】:

在带有 gcc 编译器的 X86_64 英特尔处理器中,“C”结构中成员的默认对齐方式是什么。它是否与自然边界自我对齐?

【问题讨论】:

  • 你可以通过打印出结构的几个成员的内存地址来找到你要找的东西。 printf("Memory address of variable i is %d from the beginning of the struct",&(structure.variablei)-&structure);
  • 这是由您使用的 ABI 定义的,通常由您的操作系统决定。在大多数(全部?)类 Unix 系统上,您想查看System V ABI。 SO帖子的详细信息太长了。

标签: c x86-64


【解决方案1】:

结构与结构中最大元素类型所需的对齐方式相同。

如果最大元素是 int 并且在 32 位架构上(或强制使用 32 位指令编译)将在 4 字节边界上。

如果使用 64 位指令编译,将在 8 字节边界上。

其他类型也类似。

【讨论】:

    猜你喜欢
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2012-11-22
    • 1970-01-01
    • 2012-08-07
    • 2014-05-01
    • 1970-01-01
    相关资源
    最近更新 更多