结构体的内存对齐(计算题常考点)

许久不见我考完试回来啦,让我们接着将结构体进行到底!

目录

结构体对齐的意义:

结构体对齐的实现:

对齐规则:

训练:

好到这里误区来了:

总结:

往期回顾:

下期预告:结构体实现链表


结构体对齐的意义:

结构体的内存存储形式并不是按照普通形式的直线形式的存储,为了达到快速访问的效果,计算机在对结构体进行存储时会浪费掉一些内存空间来满足数据的对齐。


结构体对齐的实现:


对齐规则:

  1. 结构体数据储存位置从0开始,对之后的数据类型储存要进行对齐(对齐是以字节为单位)
  2.  成员变量要对齐到某个数字(对齐数)的整数倍的地址处。
  3.  对齐数 ==编译器默认的⼀个对齐数与该成员变量所占内存(以字节为单位)大小的较小值(例如:int 类型的大小为4个字节,VS2022默认的对齐数是8,则int 的对齐数为 4)
  4. 结构体的总大小(不是序号)为最大对齐数的整数倍

训练:

知到了这些,就可以对结构体的内存大小进行计算了:
我们来计算两个练手:

struct {   char a;   short b;   char c; }S1;

struct {  char  a;  char  b;  short c; }S2;

S1 的计算方式:

好到这里误区来了:

注意:这里我们此时的内存大小为:5个字节,需要对齐为2的整数倍,所以最终对齐后内存为6个字节。


总结:

为了保险,计算时先画一个内存序号表,一个序号表示一个字节,从序号为0开始将数据放入。
最后不要忘了总内存内存对齐。

那么S2的内存大小为多少就由你自己来计算吧!!


往期回顾:

结构体指针icon-default.png?t=N7T8http://t.csdnimg.cn/FMfxa同时:

S2的内存大小为:4个字节!!


下期预告:结构体实现链表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/421563.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker使用http_proxy配置代理

钢铁知识库,一个学习python爬虫、数据分析的知识库。人生苦短,快用python。 在内网服务器中,docker经常需要下载拉取镜像,但由于没有网络要么只能手动导入镜像包,又或者通过http_proxy代理到其它服务器下载。 解决方法…

Elasticsearch+Kibana 学习记录

文章目录 安装Elasticsearch 安装Kibana 安装 Rest风格API操作索引基本概念示例创建索引查看索引删除索引映射配置(不配置好像也行、智能判断)新增数据随机生成ID自定义ID 修改数据删除数据 查询基本查询查询所有(match_all)匹配查…

腾讯产品面试题:为什么水果店不卖蔬菜,蔬菜店却卖水果?

嗨,亲爱的小伙伴们!小米又来啦~ 今天我要和大家聊一聊一个超级有趣的话题——腾讯产品面试题:为什么水果店不卖蔬菜,蔬菜店却卖水果?这是不是让你脑洞大开呀?!不过别着急,小米会给你…

【Leetcode】2788. 按分隔符拆分字符串

文章目录 题目思路代码 题目 题目链接 给你一个字符串数组 words 和一个字符 separator ,请你按 separator 拆分 words 中的每个字符串。 返回一个由拆分后的新字符串组成的字符串数组,不包括空字符串 。 注意 separator 用于决定拆分发生的位置&#…

预防校园火灾守护校园安全:巡检系统的使命与责任

校园安全的重要性 校园场所因人员密集而具有特殊的安全风险,一旦发生事故往往会引发严重后果。近日方城一小学发生的火灾造成了13人遇难,这样的悲剧再次提醒我们,生命安全绝对不能忽视。因此,预防校园火灾是每一个校园管理者和师生…

PS滤镜插件:Adobe Camera Raw 16 for Mac中文激活版

Adobe Camera Raw是Adobe公司开发的一款用于处理数码相机RAW格式文件的软件插件。它可以在Adobe Photoshop、Adobe Bridge和Adobe Lightroom等软件中使用,用于调整RAW文件的曝光、白平衡、对比度、色彩饱和度、锐化等参数,从而得到更好的图像质量。 软件…

Mysql - 定点型(DECIMAL)的使用详解及练习

目录 🐶1. 前言: 🐶2. DECIMAL类型简介 🐶3. Decimal使用实战 🥪#结论1:小数位不足会自动补0 🥪#结论2:小数位超出会截断 并按四舍五入处理。 🥪#结论3&#xff1…

[嵌入式软件][启蒙篇][仿真平台] STM32F103实现串口输出输入、ADC采集

上一篇:[嵌入式软件][启蒙篇][仿真平台] STM32F103实现LED、按键 文章目录 一、串口输出(1) 简介(2) 示例代码(3) 仿真效果 二、串口输入(1) 简介(2) 示例代码(3) 仿真效果 三、ADC采集(1) 简介(2) 示例代码(电压)(3) 仿真效果 (…

[足式机器人]Part2 Dr. CAN学习笔记- 最优控制Optimal Control Ch07-4 轨迹追踪

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记 - 最优控制Optimal Control Ch07-4 轨迹追踪 1. 目标误差控制-误差的调节2. 稳态非零值控制3. 输入增量控制 1. 目标误差控制-误差的调节 2. 稳态非零值控制 3. 输入增量控制

【UE5】第一次尝试项目转插件(Plugin)的时候,无法编译

VS显示100条左右的错误,UE热编译也不能通过。原因可能是[名字.Build.cs]文件的错误,缺少一些内容,比如说如果要写UserWidget类,那么就要在 ]名字.Build.cs] 中加入如下内容: public class beibaoxitong : ModuleRules …

爬虫案例—爬取ChinaUnix.net论坛板块标题

爬虫案例—爬取ChinaUnix.net论坛板块标题 ChinaUnix.net论坛网址:http://bbs.chinaunix.net 目标:抓取各个板块的标题和内容的标题 网站截图: 利用requests和xpath实现目标。源码如下: import requests from lxml import etr…

Unity学习-逐帧图集动画制作

首先在文件部分创建一个Sprite Library Asset 然后点击创建出来的文件 点下面的加号添加对应的图 添加完成之后点一下Apply 然后新建一个物体 添加这三个组件 其中SpriteLibrary里面 把你刚刚创建的图集文件拉过来 Sprite Resolver选择对应的动作和图片 然后开始制作动画 An…