Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++__属性对齐的含义_C++_Attributes_Alignment - Fatal编程技术网

C++ C++__属性对齐的含义

C++ C++__属性对齐的含义,c++,attributes,alignment,C++,Attributes,Alignment,可能重复: 这两段代码是什么意思?特别是,\uuuu属性(对齐(…)部分 struct my_struct { int64_t a; int64_t b; } __attribute__ ((aligned(16))); 及 CPU寄存器通常指向内存 当递增寄存器时,它会在64位机器上进一步指向64位。 但是,如果您想获得该节中的一个字节,编译器必须做更多的工作 如果在内存的“边缘”对齐内存,寄存器可以更快地访问它们。这也意味着结构成员被填充,因此浪费了一些空间。如果对结构进行内存

可能重复:

这两段代码是什么意思?特别是,
\uuuu属性(对齐(…)
部分

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


CPU寄存器通常指向内存

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


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

在macOS中,编译器会将任何数组对齐到16字节。GCC在64位系统上也能做到吗?1)我不知道。2) 如果你有一个新的问题,你应该开始一个新的问题,而不是标签。3) Necro发布(发布到非常旧的线程)是不受欢迎的。
struct my_struct2 { double arr[4] __attribute__((aligned(64))); };