C++-class所占的内存空间-工作小计

起因

某天刷题时发现对于类所占内存相关知识点不熟悉,遂做个笔记

结论

一个类所占的内存空间计算只与下面三条有关

  1. 非静态成员变量总合
  2. 加上编译器为了CPU计算,作出的数据对齐处理
  3. 加上为了支持虚函数,产生的额外负担

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Car1
{
};//size = 1,空类也是一个lvalue

class Car2
{
static int aa;
int a;
};//size = 4,静态变量不算在类中

class Car3
{
Car3(){};
~Car3(){};
static void Fun(){};
};//size = 4,指向虚函数表的指针sizeof(vptr) = 4(x64下为8)