关于内存储器对齐,这个想不明白
关于内存对齐,这个想不明白。下面代码,sizeof(SS)16,我能理解。但sizeof(SB)40,我不能理解。为什么sizeof
关于内存对齐,这个想不明白。
下面代码,sizeof(SS)==16,我能理解。
但sizeof(SB)==40,我不能理解。
为什么sizeof(SB)==40?
为什么SB的大小,不是SS大小的整数倍?内存对齐,不是说要填补的吗?
C/C++ codestruct SS { double d; int i;};struct SB { SS ss; char j; double d; int a; };
[解决办法]下面是SB的内存分布:
class SB size(40):
+---
0 | SS ss
16 | j
| <alignment member> (size=7)
24 | d
32 | a
| <alignment member> (size=4)
+---
可以看出系统是认识SS的
结构体的总大小为结构体最宽基本类型成员大小的整数倍,注意是基本数据类型,SS不是哦
所以存完a是36,补齐8的倍数,40!
[解决办法]struct SS
{
double d;
int i;
};
struct SB
{
SS ss; //[0-15]
char j; //[16]
double d; //[24-31]
int a; //[32-35]
}; //36按8取整 40