C++ 内存对齐及空类大小
来源:互联网 发布:传感器数据采集器 编辑:程序博客网 时间:2024/06/05 10:12
一、类
1.类使用了c++封装的特性,将变量和函数封装在其内部,成为成员变量和成员函数,并用public、protect、private这三个访问限定符,决定是否可以在类外访问成员变量和函数,
public可以在类外访问,其他不行。另外class默认是private的,struct默认是public的。
2.类产生了一个新的作用域。
3.用类类型创建对象的过程称为类的实例化
二、内存对齐
先讲一下为什么要内存对齐?
1.平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据,某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常
2.硬件原因:内存对齐后,CPU访问内存的速度大幅提升(CPU访问内存是按2,4,8,16等块大小来访问的)
对齐规则:
1.变量小于默认对齐数
首先一个变量存入内存,成员变量根据自己大小和前一个对比,如果默认对齐数减去前一个成员变量之后剩余的大小大于此成员变量的大小,则从首地址开始,以第二个变量为单位跳过一个或若干个来连续存放(这些话比较啰嗦,结合底下的代码和图,理解更佳)
2.变量大于默认对齐数
直接以默认对齐数为单位跳过,然后存放
3.最终大小必须是默认对齐数(<=最大变量)的整数倍、或最大变量(<=默认对齐数)的整数倍
class A{char i = 1 ;short b = 2;int k = 1;int j = 3;};
该类的大小即为12字节
class B{char i = 1 ;short b = 2;double j = 3;};
此类的大小即为16字节(这里double的存储方式有些奇怪,但不影响大小计算)
三、空类大小为1,要插入一个char类型的指针来标识一个唯一的对象
阅读全文
0 0
- C++ 内存对齐及空类大小
- C-内存地址对齐及大小端
- [转载]C-内存地址对齐及大小端
- c/c++内存地址对齐及大小端
- 内存对齐及大小端
- 内存对齐及大小端
- 内存地址对齐及大小端
- 内存地址对齐及大小端
- 内存地址对齐及大小端
- 内存地址对齐及大小端
- 内存地址对齐及大小端
- 内存地址对齐及大小端
- 内存地址对齐及大小端
- 内存地址对齐及大小端
- 内存-大小端对齐
- C/C++ 内存对齐原则及作用
- C++:C++ 空类的大小及相关继承类的大小
- 大小端及内存对齐问题细议
- using JDBC with Spring
- 7.17
- Android进行绘制优化的技巧
- 类型信息和泛型
- 单线程你别阻塞,Redis时延问题分析及应对
- C++ 内存对齐及空类大小
- Deepin15.4.1下CLion登录例子(带自动提示,无逻辑)
- Hadoop与Hbase兼容性
- JS原型
- 7.18 刚写完代码
- 存储器的校验——汉明码(Hanming Code)
- 注解
- 使用file把文件读取到浏览器并用进度条显示
- Android基础控件——Dialog的自定义,仿淘宝、天猫、京东等商城广告弹窗