RT.
首先,
struct sss{
double a;
char b;
char c;
};
此时,sizeof(sss)为16;
然后,
struct ss{
double a;
char b;
};
struct sss{
ss s;
char c;
};
此时,sizeof(sss)为24,因为ss这个结构“整体”的对齐要求是8,而且“整体”占用16bytes;
最后,看看类派生的情况,
struct ss{
double a;
char b;
};
struct sss : public ss{
char c;
};
此时,sizeof(sss)为24,与内嵌struct的情况相同,而不要将这种派生类的内存布局想象成“基类成员直
接[注入]派生类当中”。
本文详细解析了C++中结构体的内存对齐规则,包括不同成员组合下的对齐方式及其对sizeof运算符结果的影响,并对比了结构体继承与内嵌时的内存布局差异。

被折叠的 条评论
为什么被折叠?



