我在學校上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個字節。具體的內存對齊原理可以百度。
網上也有關於這個問題的解答:
知乎如何計算結構體大小?
簡書什麼是內存對齊?