我在学校上C++课的时候,老师开始教的是类中所有变量的大小加起来就是类的大小。但是实际用“ sizeof ”测试就发现不对,看下面的例子。
class s {
public:
char a; //1字节
int b; //4字节
float c; //4字节
double d; //8字节
}
sizeof(s); //返回值为24
这四个变量加起来是17个字节,但是由于内存对齐的原因,会调整实际的内存占用,调整完之后a会占用4个字节,float会占用8个字节,但是他们俩实际使用的只有1个和4个字节。具体的内存对齐原理可以百度。
网上也有关于这个问题的解答:
知乎如何计算结构体大小?
简书什么是内存对齐?