先来个测试--------------------------
struct stru1
{
char m1;
double m2;
};
struct stru2
{
int n1;
stru1 n2;
char * pn3;
};
sizeof(stru1)=?
sizeof(stru2)=?
这个问题时我刚刚编程时发现的,一直调试。。。
答案1:12 20 ,答案2: 16 24。
如果你中了,就写个测试看看,发现错了#¥%。
仔细分析:
stru1应该按double类型对齐,就是8个字节对齐。
stru2呢?看似与stru1无关,可是内存布局将stru2也按double类型对齐了(常规想法应该按4个字节对齐的)
因此答案为: 16 32
下面应该知道这个的答案了:
stru3
{
int n1,n2;
stru1 n3;
char *pn4;
};
sizeof(stru3) = 32,和stru2一样的。
stru4
{
int n1,n2;
stru1 n3;
char *pn4;
int n5;
};
sizeof(stru4) = 32,一样的。
呵呵!写了下来,大伙别见笑)))