我有一个结构数组定义如下:
struct {
int x;
char y;
} arr[10];
我机器上int的大小是4个字节,char是1个字节.我知道结构将在内部填充,即数组的每个元素将具有8个字节的大小.但我想知道是否
1)这是因为下一个数组元素中的int类型成员的对齐要求
2)是因为每个结构本身应该在8字节边界上对齐,因为结构类型变量需要自然对齐.
为了使我的观点更清楚,应该是第一个数组成员的起始地址?如果它是一个8字节对齐的地址,如第二种情况所指出的那样,这可能是一个问题,同时定义大的2-D数组,如:
int arr [1000] [1000];
这里,2-D阵列的每个元素(即每个1-D阵列)应该在4000字节边界上对齐.机器可能没有内存孔来满足此内存要求.