可能重复:
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))); };
答案 0 :(得分:1)
CPU寄存器通常指向内存。
当递增寄存器时,它在64位机器上进一步指向64位。 但是,如果要在该部分中找到一个字节,编译器必须做更多的工作。
如果你在内存的“边缘”对齐内存,寄存器可以更快地访问它们。它还意味着结构构件被填充,因此浪费了一些空间。如果你对结构进行内存转储,你可能会对填充感到惊讶。