C ++ __attribute__对齐的含义

时间:2012-10-30 01:11:12

标签: c++ attributes alignment

  

可能重复:
  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))); };

1 个答案:

答案 0 :(得分:1)

CPU寄存器通常指向内存。

当递增寄存器时,它在64位机器上进一步指向64位。 但是,如果要在该部分中找到一个字节,编译器必须做更多的工作。

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