首页 > 解决方案 > C++ 类的大小是 40 字节而不是 36

问题描述

我的 C++ 类具有字符串和 int 的数据成员。我认为它的大小是 36 字节,但输出显示为 40 字节。有人可以解释一下吗?

#include <iostream>

using namespace std;

class SizeTest {

private:
    std::string name;
    int i;

};

int main(int argc, char** argv) {

    cout<<"sizeof(SizeTest) is : " << sizeof(SizeTest)<<endl;
}

输出:

sizeof(SizeTest) is : 40

标签: c++structpaddingsizeof

解决方案


有人可以解释一下吗?

sizeof总是返回正确的大小。因此,我们可以推断您对尺寸的期望是错误的。

你没有解释为什么你认为你做了什么,但最有可能的错误原因是没有考虑内存对齐。

我想,字符串是 32 字节

它可以在某些系统上。并非所有系统都如此。

int 是 4 个字节。

它可以在某些系统上。并非所有系统都如此。

所以 sizeof(SizeTest) 应该是 36 字节

不。一个类的大小不是“应该”是其成员大小的总和。


推荐阅读