背景
C++ 中最基本的存储单位是字节,C++ 中所有的数据都是由对象组成的,每一个对象都包含了一个或多个内存位置。
普通类的内存大小
①.空类的大小是 1 个字节
#include "iostream"
#include "string"
using namespace std;
class MyClass
{
};
int main()
{
cout << "空类 MyClass 大小:"<< sizeof(MyClass) << endl;
system("pause");
return 0;
}
运行结果如下:
②.成员函数不占用类的内存空间
③.静态成员变量不占类的内存空间
③.普通类的大小
普通类的内存大小为其所有非静态成员变量内存大小之和(忽略内存对齐):
#include "iostream"
#include "string"
using namespace std;
class Base
{
public:
Base() = default;
~Base() = default;
private:
int a;
int b;
};
int main()
{
cout << "Base 大小:" << sizeof(Base) << endl;
system("pause");
return 0;
}
运行结果如下:
普通类的内存布局
①.VS 查看类的内存布局
Visual Studio 中使用两个命令参数即可查看类的内存布局:/d1 reportAllClassLayout 或者 reportSingleClassLayoutXXX,其中XXX代表类名,如下图:
②.普通类的内存布局
类对象按其成员变量的声明顺序分配内存空间。
class Base
{
public:
Base() = default;
~Base() = default;
private:
int a;
int b;
};
VS 中查看内存布局如下: