内存对齐
class A{
static int a;
}
int main(){
A obj;
cout<<sizeof(obj); }
在你的代码中,class A
包含一个静态成员变量 a
。静态成员变量不属于类的任何特定实例,而是属于整个类。因此,在计算类的实例大小时,静态成员变量不会被考虑在内。
在 C++ 中,如果一个类没有定义任何非静态成员变量,那么该类的实例大小通常为 1 字节。这是为了确保每个对象实例在内存中都有一个独一无二的地址。
所以,当你运行 sizeof(obj)
时,它会返回 1,因为 obj
没有非静态成员变量,而 C++ 保证每个对象至少占用 1 字节的内存。
代码示例如下:
#include <iostream>
class A {
public:
static int a;
};
int main() {
A obj;
std::cout << sizeof(obj) << std::endl; // 输出应该是 1
return 0;
}
在这个例子中,sizeof(obj)
将输出 1,表示 obj
对象在内存中占用 1 字节。