了解C++类的大小和类变量的字节对齐

Posted bcbobo21cn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了了解C++类的大小和类变量的字节对齐相关的知识,希望对你有一定的参考价值。

空类;

空类没有内容,但是需要分配地址;大小为1个字节;


基础类;

下图类占用8个字节;i 是四字节;c本身是一字节大;为对齐填充了3个字节;总大小是8字节;

 

double为8字节大;下图,4 + 4 + 8 = 16;

 

带虚函数的情况;

下图类占用12个字节,
四字节对齐2个变量共占用8个字节;由于存在虚函数,在类开始位置插入了一个虚函数指针,该指针占用4个字节,共计12字节;类的非虚函数不占用类对象的内存,函数编译后形成二进制文件放在内存中的代码段区;

 

类继承的情况;

基类大小为8个字节;继承类大小为12字节;继承类继承了基类的变量;

在内存中基类在派生类的前面;这就在看不到的情况下系统复制了一份数据;

 

 

以上是关于了解C++类的大小和类变量的字节对齐的主要内容,如果未能解决你的问题,请参考以下文章

关于字节对齐的理解

内存字节对齐

内存字节对齐

Visual Studio2008 C++结构体成员需要内存对齐吗?

Java 类的内存对齐

C++ 结构体对齐