【问题标题】:C++ __attribute__ aligned meaning [duplicate]C ++ __attribute__对齐的含义[重复]
【发布时间】:2012-10-30 10:42:08
【问题描述】:

可能重复:
GCC __attribute__((aligned(x)) explanation
What is meaning of the ‘_attribute_((aligned(4)));’ in the first line?

这两段代码是什么意思?特别是__attribute__ ((aligned(..))) 部分。

struct my_struct {
  int64_t a;
  int64_t b;
} __attribute__ ((aligned(16)));

struct my_struct2 { double arr[4] __attribute__((aligned(64))); };

【问题讨论】:

    标签: c++ attributes alignment


    【解决方案1】:

    CPU 寄存器通常指向内存。

    当您增加一个寄存器时,它会在 64 位机器上进一步指向 64 位。 但是,如果您想获取该节中的一个字节,编译器必须做更多的工作。

    如果您在内存的“边缘”上对齐内存,寄存器可以更快地访问它们。这也意味着结构成员被填充,因此浪费了一些空间。如果您对结构进行内存转储,您可能会对填充感到惊讶。

    【讨论】:

    • 在 macOS 中,编译器将任何数组对齐到 16 字节。 GCC 在 64 位系统上也能做到这一点吗?
    • 1) 我不知道。 2)如果你有一个新问题,你应该开始一个新问题,而不是加标签。 3)不赞成发布死灵帖子(发布到非常旧的线程)。
    猜你喜欢
    • 1970-01-01
    • 2014-04-15
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多