网上教程一大堆,我这边就不再赘述废话了

思路方法:

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的数据对齐---简单解析相关推荐

  1. mysql mongodb binlog_订阅MongoDB的数据变更比解析mysql的binlog更简单

    前言 我们开源了一个订阅分发mysql的binlog的项目,一直用的非常好,忽然有天开发说能不能支持MongoDB的数据订阅呢,MongoDB的使用度也挺广泛的.安排.经过简单的了解后发现MongoD ...

  2. 大数据培训课程数据清洗案例实操-简单解析版

    数据清洗(ETL) 在运行核心业务MapReduce程序之前,往往要先对数据进行清洗,清理掉不符合用户要求的数据.清理的过程往往只需要运行Mapper程序,不需要运行Reduce程序.大数据培训 数据 ...

  3. (一)基础:通过简单HTTP请求和正则进行数据爬取解析

    (一)基础:通过简单HTTP请求和正则进行数据爬取解析 文章目录 (一)基础:通过简单HTTP请求和正则进行数据爬取解析 发送简单http请求 如何使用代理ip发送请求 常用的User-Agent 发 ...

  4. Nginx源码分析--数据对齐posix_memalign和memalign函数

    posix_memalign函数() /*  * 背景:  *      1)POSIX 1003.1d  *      2)POSIX 标明了通过malloc( ), calloc( ), 和 re ...

  5. 【转】彻底搞清计算结构体大小和数据对齐原则

    数据对齐: 许多计算机系统对基本数据类型合法地址做出了一些限制,要求某种类型对象的地址必须是 某个值K(通常是2,4或8)的倍数.这种对齐限制简化了形成处理器和存储器系统之间的接口的硬件 设计.例如, ...

  6. [转载] Python: struct 模块之字节对齐问题

    参考链接: Python中的struct模块 P y t h o n Python Python 在二进制写文件时,可以用 s t r u c t struct struct 模块将数据捆绑成结构体转 ...

  7. busybox启动流程简单解析:从init到shell login

    https://www.cnblogs.com/arnoldlu/p/10868354.html busybox启动流程简单解析:从init到shell login 关键词:kernel_init() ...

  8. gcc数据对齐之: howto 2.

    原文链接:http://www.catb.org/esr/structure-packing/ 谁应阅读本文 本文探讨如何通过手工重新打包C结构体声明,来减小内存空间占用.你需要掌握基本的C语言知识, ...

  9. 数据对齐-编辑距离算法详解(Levenshtein distance)

    目录 一:简介 二:算法定义 1:定义 2:a small case 3:算法的上下界限 三:应用场景 1:数据对齐 2:拼写纠错 四:其他的编辑距离算法 五:算法实现 1:递归实现 2:动态规划实现 ...

最新文章

  1. spring手动控制事务开启_Spring 基于AOP的事务控制
  2. [转]SQL2005后的ROW_NUMBER()函数的应用
  3. 使用 AngularJS 和 Electron 构建桌面应用
  4. finally引起的异常丢失问题
  5. Dynamips 7200
  6. 测试标准I/O缓冲的代码,
  7. Java基础,删除指定索引的元素,编程思路详解
  8. 疯狂的程序员阅读笔记
  9. java 银联,支付宝接口
  10. Mac安装rocketmq
  11. lighttpd 配置php,Lighttpd常用配置方法
  12. python高德地图api调用实例_Python玩转高德地图API(二)
  13. 解决VMbox中软连接创建错误的问题
  14. 百度搜索结果页面的参数 提示词输入搜索框方式(rsv_sug5)
  15. 【探花交友】今日佳人
  16. 74hc164驱动数码管c语言程序,74hc164应用电路图_74hc164驱动源程序
  17. 多态的理解(父类引用指向子类对象)
  18. php输出26个英文字母,PHP 26个英文字母递增
  19. 你知道Java程序猿工资有多少吗?
  20. 【随笔】AI+眼镜行业

热门文章

  1. Java面试题2019简书_2019最新Spring面试题大全含答案之Spring Beans(2019最全Spring超级葵花宝典)...
  2. CSS3 实用技巧:制作三角形
  3. 如何在本地开发环境调试微信 JS-SDK
  4. vue使用iview Timeline 时间轴不显示问题
  5. vue 环境的搭建及初始化项目
  6. CORS(跨域资源共享)
  7. safari 音频播放问题
  8. ptyhon中文本挖掘精简版
  9. 使用DataTable更新数据库
  10. 转载 从SRAM中读写一个数据问题——Verilog