堆栈变量是否由GCC __attribute __((aligned(x)))对齐?
我有以下代码: #include <stdio.h> int main(void) { float a[4] __attribute__((aligned(0x1000))) = {1.0, 2.0, 3.0, 4.0}; printf("%p %p %p %p\n", &a[0], &a[1], &a[2], &a[3]); } 我有以下输出: 0x7fffbfcd2da0 0x7fffbfcd2da4 0x7fffbfcd2da8 0x7fffbfcd2dac 为什么地址a[0]不是的倍数0x1000? 到底__attribute__((aligned(x)))是什么?我误解了这个解释吗? 我正在使用gcc 4.1.2。