含有数组的内存对齐的例子,不晓得是如何对齐的
含有数组的内存对齐的例子,不晓得是怎么对齐的。class A{char a,bchar arr[5]}//这个sizeof(A)7.。1+1+5
含有数组的内存对齐的例子,不晓得是怎么对齐的。
class A
{
char a,b;
char arr[5];
}
//这个sizeof(A)=7.。1+1+5 = 7.。对齐单位为1字节。这个可以理解。
class B
{
int a,b;
char arr[5];
}
//这个sizeof(B) = 16.. 是怎么对齐的? 数组占了8个字节?。为什么?
[解决办法]sizeof的结果一般会是结构体中占用最多内存的元素所占内存的整数倍,或是4的整数倍,这里的4取决于机器的位宽,32位机器一般是4个字节,因为总线能一下子读取这么大小的数据,否则读取性能可能会有问题。
sizeof(A) == 7,楼主懂了
sizeof(B) == sizeof(int) + sizeof(int) + sizeof(arr)的对4向上取整 = 4 + 4 + 8 = 16