Har*_*ngh 1 c memory struct memory-alignment
我有一个employee实例化的结构定义monica。结构看起来像这样
struct __attribute__((aligned(2))) employee {
int salary; // 4 bytes
int age; // 4 bytes
} monica;
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我强制将结构对齐,2但 gcc 不会将结构对齐设置为 2,也不会引发错误。我尝试使用alignof宏(include <stdalign.h>)打印结构的对齐方式,该宏4作为结构的对齐方式返回。为什么 gcc 不能将结构的对齐方式设置为小于其字段之一的最大对齐方式的值。
我尝试通过另外添加一个指针作为结构中的字段来重现该问题。在将指针添加为字段时,我注意到 gcc 不允许我使用__attribute__((aligned(x))).
1GCC 允许我通过使用设置结构的对齐方式__attribute__((packed)),但它仍然不允许我1通过使用设置对齐方式__attribute__((aligned(1)))。为什么会发生这种情况?
海湾合作委员会 x86 v7.1.1