1. char *pStrTest = "Test";
=> sizeof(pStrTest) == 4;
2. char szString[10];
=> sizeof(szString) == 10;
3. class A
{
};
=> sizeof(A) == 1; // 没有任何成员的时候, 编译器为其分配一个自己的内存;
4. class A
{
int a[]; // 类定义中可以不指定数组大小; 可以认为只是声明, 所以不占内存;
};
=> sizeof(A) == 1;
5. class A
{
int a[];
virtual ~A() = 0;
};
=> sizeof(A) == 4; // 增加了虚函数, 所以编译器会在类中增加一个指针成员, 用来指向类的虚函数表;
6. class A
{
int a[];
virtual ~A() = 0;
static int b; // 静态成员不会在对象实例中分配内存;
};
=> sizeof(A) == 4;

本文详细解读了C++中类的内存分配机制,通过多个示例展示了sizeof运算符如何用于获取不同类及其成员的内存大小。包括基本类型、空类、包含数组、虚函数和静态成员等情况下的内存分配情况。

696

被折叠的 条评论
为什么被折叠?



