使用g ++编译器在CPP中查找类的大小而不是对象的大小的方法是什么?

时间:2019-04-04 00:22:55

标签: c++

sizeof(className)-给出实际对象的大小,因为它不包括静态变量和存储在静态位置的虚拟表的大小。

试图找出gcc编译器中的VTABLE占用了多少内存。据我了解,VTABLE是类属性,而Vpointer是对象属性。因此,如果有3个类的实例,则将有3个虚拟指针。另一方面,只有1个VTABLE。 现在,当我们执行sizeof(className)时-实际上,它给出的是对象的大小,而不是sizeof类。我之所以这样说是因为它不包括VTABLE的大小,而是包括虚拟指针的大小。 另外,它不包括静态变量的大小,静态变量是类属性,而不是对象属性。

class A
{
  public:
   virtual void f(){}
   virtual void g() {}
   static int a;
};

由于一个虚拟指针,此处的大小为4个字节。 Sizeof(A)-告诉对象A的大小,而不是类A的大小。

期望-找出类而不是对象的大小。

0 个答案:

没有答案