当前位置: 首页 > news >正文

结构体内存对齐具体解释

.在32位机器上
设有以下说明和定义:
1234567891011 typedef union { long i; int k[5]; char c; } DATE; struct data { int cat; DATE cow; double dog; } too; DATE max;
则语句 printf(“%d”,sizeof(struct data)+sizeof(max));的运行结果是:
(答案:52)

这道题可能非常多同学都有误区。不明确内存对齐的真正含义,那么以下我来解说一下,首先共用体里面你们肯定都是明确的。DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20 。
可是到了结构体里面。事实上它是这种。首先一个Int,然后后面5个int,再然后是一个double,所以最大的成员长度是8不是20,然后6个int刚刚24,然后加上8是32。加上共用体是52,假设你把第一个Int cat去掉,你仍然会发现。结构体大小还是32。由于8个字节内存对齐,前面2个int一组。最后还单一个int也要占8个字节。希望能对内存对齐不明确的童鞋有所帮助。

相关文章:

  • PyOpenCL图像处理:两张图片不带权重叠加
  • 17.Azure备份(MARS)代理(上)
  • Cocos Code IDE里xcodeprojectlua脚本更新
  • 《小账本》开发日志 第六天
  • 『PyTorch x TensorFlow』第八弹_基本nn.Module层函数
  • 解决-webkit-box-orient: vertical;(文本溢出)属性在webpack打包后无法编译的问题
  • Linux快速构建LAMP网站平台
  • python 装饰器(一)
  • kali:加速WEP黑客攻击,ARP请求重播攻击
  • DM8127-UART驱动
  • 利用表格分页显示数据的js组件datatable的使用
  • RAID磁盘阵列种类及区别
  • Linux LVM 之LV
  • 语音识别技术受追捧,无法独立工作的“速记神器”何时才能成为新亮点?
  • 还在啃老?是该来场逼格满满的产品展示了!
  • 「面试题」如何实现一个圣杯布局?
  • ESLint简单操作
  • httpie使用详解
  • JavaScript创建对象的四种方式
  • linux安装openssl、swoole等扩展的具体步骤
  • MySQL用户中的%到底包不包括localhost?
  • Travix是如何部署应用程序到Kubernetes上的
  • vue.js框架原理浅析
  • 关于for循环的简单归纳
  • 聚类分析——Kmeans
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 深度学习入门:10门免费线上课程推荐
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 详解NodeJs流之一
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ​马来语翻译中文去哪比较好?
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (09)Hive——CTE 公共表达式
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (4)STL算法之比较
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (Matlab)使用竞争神经网络实现数据聚类
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (SpringBoot)第七章:SpringBoot日志文件
  • (补)B+树一些思想
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (汇总)os模块以及shutil模块对文件的操作
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (四)Controller接口控制器详解(三)
  • (译) 函数式 JS #1:简介
  • (转)jQuery 基础
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景