【C/C++】结构体内存对齐

news/2024/9/12 20:07:13/文章来源:https://www.cnblogs.com/JOKER2255/p/18303632

结构体内存对齐详解

1、第一个成员在与结构体变量偏移量为0的地址处
2、其他成员变量要偏移到 对齐数 的整数倍的地址处 ,注意 偏移是从结构体首地址处开始的。

    对齐数 取的是 编译器默认的一个对齐数 该成员大小 这个俩个数中的最小值。

   【VS中默认的值为8、Linux环境默认不设对齐数(对齐数是结构体成员自身的大小)】
3、结构体总大小  为最大对齐数(每个成员变量都有一个对齐数)的整数倍
4、如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍

 为什么要进行内存对齐? 

1、是平台本身的原因,任意地址上的任意数据是不能随意访问的,如果不正确访问可能会造成硬件异常。

2、是性能原因,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问 

 

如何让结构体按照指定的对齐参数进行对齐?

  需要使用一个预处理指令#pragma pack

具体用例

1 #pragma pack(1)//设置默认对齐数为1
2 struct S1
3 {
4     char c1;
5     int i;
6     char c2;
7 };
8 #pragma pack()//取消设置的默认对齐数,还原为默认
View Code

 

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

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

相关文章

我不应该用JWT的!

一、前言 大家好呀,我是summo,之前有自学过Shrio框架,网上一搜就有SpringBoot整合Shrio+ JWT的文章,我是在学习Shrio框架的时候顺带学的JWT。后来我还看见有很多博主专门写文章介绍JWT,说这个东西的优点很多,安全性好、去中心化、方便啥的,我就把JWT也应用在我们自己的系…

OpenAI 曝新项目「草莓」,提升 AI 推理能力;智谱 AI 开源视频理解模型丨 RTE 开发者日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观点…

2024-07-15 vue组件发布npm后,再使用,样式不见了?==》查看样式是否在dist包里,有的话应该就是样式没引用

哎,嗯。。。emmm。。。 好,问题就是这样的,最近写了vue组件打算上到npm,然后上是上了,但是样式却没有生效??左上角是组件样式本地调试的截图,可以看到是生效的,右上角的截图是我在别的项目引用了我写的这个库,结果样式却没有生效。 我打包后的文件列表如下: 注意:s…

centos8 内核升级教程 执行安装成功后 reboot

Centos 处理步骤 先设置DNS为114.114.114.114等 CentOS 8 升级内核到 6.9 步骤 **1 查看内核现状版本 4.18** [root@localhost yum.repos.d]# hostnamectl Static hostname: localhost.localdomain Icon name: computer-vm Chassis: vm Machine ID: 1c063b9ed186473e891a2fe6ac…

【笔记】Nmap工具原理探索

学习记录下计网原理的东西【笔记】Nmap工具原理探索 原文章:【THM】Nmap(Nmap工具使用简介)-学习 - Hekeatsll - 博客园 (cnblogs.com) Nmap是一款跨平台的开源端口扫描软件,它用来扫描计算机的开放端口,以确定运行的网络服务,并推断出计算机运行的操作系统 Nmap三种基本扫…

QUIC(更新中... ...)

本文档只记录我个人认为应该着重进行一下笔记的部分。 RFC QUIC 基本内容介绍在RFC 9000,加密的实现在9001,丢包检测和拥塞机制在9002。 简介 是由Google开发的一种基于UDP的传输层协议,旨在提高网络传输的性能和安全性。关键要素:UDP 443端口,将TLS 1.3内置在QUIC协议报文…

论文阅读:使用集合预测网络进行联合实体和关系提取

github代码:http://github.com/DianboWork/SPN4RE 目的从本质上讲,句子中提到的关系三元组是集合的形式,它没有元素之间的内在顺序,并表现出排列不变的特征。(多个三元组的抽取顺序,对抽取结果没有影响) 然而,以前基于 seq2seq 的模型需要事先使用一些启发式全局规则将…

打造个人贴身助理-小白必备AI技能

打造个人贴身助理-小白必备AI技能 将你的公众号接入AI智能体 登录后台开启开发者功能coze 后台创建 bot 登录 Coze 国内官网地址:https://www.coze.cn。点击右上角【开始使用】。 创建智能体 点击左上角【创建Bot】配置选择模型配置人设和插件发布到自己的公众号成功发布进入公…

免费可视化工具如何打造动态销售管理看板?

在这个数据驱动的时代,销售管理不再仅仅依赖于传统的报表和口头汇报,而是越来越倾向于直观、动态的可视化展示。可视化工具的出现,无疑为中小企业乃至大型企业提供了强大的助力,帮助销售团队构建高效、直观的销售管理看板,让数据说话,决策有据可依。今天要说的是,如何利…

jmeter分布式实战

一、原理(jdk和jmeter版本必须一致)二、配置执行机slave 修改配置文件:JMETER_HOME/bin/jmeter.properties 中如下信息即可完成配置执行机远程启动端口(默认为 1099) server_port=1029 server.rmi.localport=1029 server.rmi.ssl.disable改为true 启动执行机服务器: 管理…

Microsoft Office 自定义安装部署工具 | Mocreak

软件简介: Mocreak 是一款一键自动化下载、安装、部署正版 Office 的办公增强工具。该工具完全免费、无广告、绿色、无毒、简约、高效、安全。 软件特点: 一键快速下载、安装、部署最新版 Microsoft Office 软件。提供简约、高效,且可自定义的图形界面,提升部署效率。支持将…