struct/class的数据对齐---简单解析
网上教程一大堆,我这边就不再赘述废话了
思路方法:
1,以四个为一组,最终的内存所占结果必须是四的倍数
2,优先考虑四的整数倍,之后再考虑内存空间问题
struct Beyond{int a;char b;short c;};
int main()
{struct Beyond yanyu;cout<<sizeof(yanyu)<<endl;
}
解释:首先int占4字节,char占1字节,short占2字节。
以四为一组,先是存放int刚好四个字节,之后再存放char,有两种选择:
①char占四个字节(浪费三个字节空间),short占四个字节(浪费两个字节空间)
;
②char占两个字节(浪费一个字节空间),short占两个字节,这俩个组成一组
。
要你你会如何选择?很显然选择方案②
最终:int占四个字节(为一组)、char占两个字节short占两个字节(为一组),最后所占内存空间为4+4=8字节
struct Data{char b;int a;short c;};
int main()
{struct Beyond yanyu;cout<<sizeof(yanyu)<<endl;
}
解释:首先char为一个字节,int为四个字节,四个字节为一组,没办法,为了高效,只能浪费内存空间了,char只能占四个字节独自成为一组;int占四个字节为一组;short占两个字节,但是必须四个字节为一组,故short也只能占四个字节成为一组。
最终:char占四个字节(浪费两个字节空间)为一组,int占四个字节为一组,short占四个字节(浪费俩个字节空间)为一组。最后所占内存空间为4+4+4=12字节。
struct Beyond{char b;short c;int a;};
int main()
{struct Beyond yanyu;cout<<sizeof(yanyu)<<endl;
}
解释:首先char占一个字节,short占两个字节;有两种方案可以执行:
①char占四个字节(浪费三个字节内存空间),组成一组,short占四个字节(浪费两个字节内存空间),组成一组;
②char占两个字节(浪费一个字节内存空间),short占两个字节,共组成一组
要你你会如何选择?肯定是方案②
紧接着,int占四个字节为一组。
最终:char占两个字节,short占两个字节,int占四个字节,2+2+4=8个字节。
struct/class的数据对齐---简单解析相关推荐
- mysql mongodb binlog_订阅MongoDB的数据变更比解析mysql的binlog更简单
前言 我们开源了一个订阅分发mysql的binlog的项目,一直用的非常好,忽然有天开发说能不能支持MongoDB的数据订阅呢,MongoDB的使用度也挺广泛的.安排.经过简单的了解后发现MongoD ...
- 大数据培训课程数据清洗案例实操-简单解析版
数据清洗(ETL) 在运行核心业务MapReduce程序之前,往往要先对数据进行清洗,清理掉不符合用户要求的数据.清理的过程往往只需要运行Mapper程序,不需要运行Reduce程序.大数据培训 数据 ...
- (一)基础:通过简单HTTP请求和正则进行数据爬取解析
(一)基础:通过简单HTTP请求和正则进行数据爬取解析 文章目录 (一)基础:通过简单HTTP请求和正则进行数据爬取解析 发送简单http请求 如何使用代理ip发送请求 常用的User-Agent 发 ...
- Nginx源码分析--数据对齐posix_memalign和memalign函数
posix_memalign函数() /* * 背景: * 1)POSIX 1003.1d * 2)POSIX 标明了通过malloc( ), calloc( ), 和 re ...
- 【转】彻底搞清计算结构体大小和数据对齐原则
数据对齐: 许多计算机系统对基本数据类型合法地址做出了一些限制,要求某种类型对象的地址必须是 某个值K(通常是2,4或8)的倍数.这种对齐限制简化了形成处理器和存储器系统之间的接口的硬件 设计.例如, ...
- [转载] Python: struct 模块之字节对齐问题
参考链接: Python中的struct模块 P y t h o n Python Python 在二进制写文件时,可以用 s t r u c t struct struct 模块将数据捆绑成结构体转 ...
- busybox启动流程简单解析:从init到shell login
https://www.cnblogs.com/arnoldlu/p/10868354.html busybox启动流程简单解析:从init到shell login 关键词:kernel_init() ...
- gcc数据对齐之: howto 2.
原文链接:http://www.catb.org/esr/structure-packing/ 谁应阅读本文 本文探讨如何通过手工重新打包C结构体声明,来减小内存空间占用.你需要掌握基本的C语言知识, ...
- 数据对齐-编辑距离算法详解(Levenshtein distance)
目录 一:简介 二:算法定义 1:定义 2:a small case 3:算法的上下界限 三:应用场景 1:数据对齐 2:拼写纠错 四:其他的编辑距离算法 五:算法实现 1:递归实现 2:动态规划实现 ...
最新文章
- spring手动控制事务开启_Spring 基于AOP的事务控制
- [转]SQL2005后的ROW_NUMBER()函数的应用
- 使用 AngularJS 和 Electron 构建桌面应用
- finally引起的异常丢失问题
- Dynamips 7200
- 测试标准I/O缓冲的代码,
- Java基础,删除指定索引的元素,编程思路详解
- 疯狂的程序员阅读笔记
- java 银联,支付宝接口
- Mac安装rocketmq
- lighttpd 配置php,Lighttpd常用配置方法
- python高德地图api调用实例_Python玩转高德地图API(二)
- 解决VMbox中软连接创建错误的问题
- 百度搜索结果页面的参数 提示词输入搜索框方式(rsv_sug5)
- 【探花交友】今日佳人
- 74hc164驱动数码管c语言程序,74hc164应用电路图_74hc164驱动源程序
- 多态的理解(父类引用指向子类对象)
- php输出26个英文字母,PHP 26个英文字母递增
- 你知道Java程序猿工资有多少吗?
- 【随笔】AI+眼镜行业