小编Max*_*.ag的帖子

结构数组中的内存对齐

我有一个结构数组定义如下:

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字节边界上对齐.机器可能没有内存孔来满足此内存要求.

c memory arrays structure alignment

4
推荐指数
1
解决办法
3912
查看次数

标签 统计

alignment ×1

arrays ×1

c ×1

memory ×1

structure ×1