【发布时间】:2010-10-24 21:28:36
【问题描述】:
我有以下代码:
#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))) 到底是做什么的?我误解了this的解释?
我使用的是 gcc 4.1.2。
【问题讨论】:
标签: c gcc memory-alignment callstack