为什么 alignof(max_align_t) 是 16?

Why is alignof(max_align_t) 16?

我是 运行 Debian x86_64 Intel 处理器。

gcc (Debian 8.3.0) 编译如下程序

#include <stdio.h>
#include <stdalign.h>
#include <stddef.h>

int main(){
  printf("%zd\n",alignof(max_align_t));
}

并输出

16

什么数据类型需要 16 字节对齐?

在 x86_64、_Alignof(long double)==16