所以我目前是一名学生,并且有一个编程课程。
今天我们讨论了 sizeof 在不同类中的使用(如果它有 1 个 int 或 2 个 int 等等)
我发现奇怪的示例的一部分是这样的:
class TwoIntAndACharClass
{
public:
int x_;
int y_;
char z_;
};
和测试它的部分
TwoIntAndACharClass o3b;
cout << "Sizeof TwoIntAndACharClass = " << sizeof(o3b) << "\n";
所以在程序中我可以看到一个有 1 个字符的类占用了 1 个字节。所以当我看到这个时,我以为我会看到 9 个字节而不是 12个字节
所以一开始我觉得这很奇怪,但一段时间后我得出结论,它可能会节省某种 4 字节的块。
为了 100% 确定这是真的,我尝试在类中添加一个新变量(一个 8 字节的双精度变量),总大小从 12 字节增加到现在的 24 字节。那就是 char 现在必须是 8 个字节长,所以我的最后一个理论失败了。
我的最后一个理论是,它将采用已声明的最大变量并将其大小用于 char 变量 _z ,因为这适用于 long long int(8 bytes) 和 double(also 8 bytes)
所以我的问题是,我的最后一个理论是正确的 - 还是让 char 占用更多内存而不是需要的东西?(我的老师确实说过每个编译器可以以不同的方式处理这个问题,但我已经在 microsoft Visual Studio 上尝试过,一个朋友在另一个编译器上尝试过,结果相同,但这是真的吗,是编译器处理这个问题的方式吗?)
对不起我糟糕的英语。