首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于内存储器对齐,这个想不明白

2012-09-06 
关于内存对齐,这个想不明白。下面代码,sizeof(SS)16,我能理解。但sizeof(SB)40,我不能理解。为什么sizeof

关于内存对齐,这个想不明白。
下面代码,sizeof(SS)==16,我能理解。
但sizeof(SB)==40,我不能理解。

为什么sizeof(SB)==40?

为什么SB的大小,不是SS大小的整数倍?内存对齐,不是说要填补的吗?


C/C++ code
struct 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

热点排行