c-结构体内存对齐,位段

首先就是解释为什么要这么处理:处理器在处理已经对齐的变量时只需要一次就能够读取,而没对齐时可能就需要将该变量读取两次,(既4个字节,读了前三个字节,还剩一个字节就需要再读取一次)

接着说一下对齐的规则:

1.第一个直接放在偏移量为0的地方,不管是什么类型的变量

2.从第二个开始每一个存放时都要放在偏移量为(默认值与字节数较小值)的整数倍处

3.最后得出来的那个值要是(几个变量字节最大的那个)的整数倍处

eg:

char

char

int

(vs默认是8)也可以用#pragma pack()进行修改

0char

1char

2

3

4int

5int

6int

7int

0~7加起来刚好8个是4的整数倍,所以不需要额外扩展一个空间

当使用sizeof那个这个结构体时出来的答案就是8

这个对齐主要是用空间去换取时间

为了减小损耗一般在没有固定要求的情况下把小字节的变量放前面进行定义

 位段

char s:5;   1

char s2:1;

char s1:4;  1

int a:6;1

变量后的数字是以bit为单位的

新建变量还是符合对齐的

能节省空间,但是垮不了平台

//这里是无关的,仅是个人记录一下笔记

结构体传参数时尽量传地址,当整个结构体传入函数时会产生大量的堆栈

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

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

相关文章

Gitlab全量迁移

Gitlab全量迁移 一、背景1.前提条件 一、背景 公司研发使用的Gitlab由于服务器下架需要迁移到新的Gitlab服务器上。Gitlab官方推荐了先备份然后再恢复的方法。个人采用官方的另外一种方法,就写这篇文章给需要的小伙伴参考。 源Gitlab: http://old.mygitlab.com #地…

算法库应用- 表的自然链接

功 能: 设计算法,将两个单链表数组的特定位序, 相同者,链接起来 编程人: 王涛 详细博客:https://blog.csdn.net/qq_57484399/article/details/127161982 时 间: 2024.4.14 版 本: V1.0 V1.0 main.cpp /***************************************** 功 能: 设计算法,将两个…

Linux:环境基础开发工具使用

文章目录 前言1.Linux下的软件安装1.1 什么是软件包1.2 如何安装软件1.3 如何卸载软件 2.vim2.1 vim的基本概念2.2 vim的基本操作2.3 vim正常模式命令集2.4 vim末行模式命令集2.5 vim的操作总结 3.Linux下的编译器:gcc3.1 gcc的使用3.2 gcc是如何工作的3.2.1 预处理…

嵌入式学习54-ARM3(中断和时钟)

S3c2440中断控制器 内部外设: DMA :(直接内存存取) Direct Memor…

git 批量更改提交者邮箱规避 GH007 private email address 问题

问题描述 有时我们在推送提交时,会看到如下报错 remote: error: GH007: Your push would publish a private email address. remote: You can make your email public or disable this protection by visiting: remote: http://github.com/settings/emails这是因为…

基于Linux定时任务实现的MySQL周期性备份

1、创建备份目录 sudo mkdir -p /var/backups/mysql/database_name2、创建备份脚本 sudo touch /var/backups/mysql/mysqldump.sh# 用VIM编辑脚本文件,写入备份命令 sudo vim /var/backups/mysql/mysqldump.sh# 内如如下 #!/bin/bash mysqldump -uroot --single-…

Ant Design 官方推荐的实用前端工具

Ant Design 作为一款备受欢迎的 UI 组件库,不仅功能强大,还非常注重用户体验。在官网上还特别推荐了一系列其他实用的工具库,这些工具库能够与 Ant Design 形成互补,提供更为全面和高效的解决方案。通过结合这些工具,可…

数据库的负载均衡,高可用实验

一 高可用负载均衡集群数据库实验 1.实验拓扑图 2.实验准备(同一LAN区段)(ntp DNS) 客户端:IP:192.168.1.5 下载:MariaDB 负载均衡器:IP:192.168.1.1 下载:keepalived ipvsadm I…

操作系统银行家算法计算题

设系统某个T0时刻的状态,如表1所示: 表1 系统资源状态表使用银行家算法回答下面问题: (1)系统在T0时刻状态是否安全?若安全,请给出一个安全序列。 (2)假如T0时刻进程P1…

C语言指针进阶:数组与指针的联系

目录 1. 数组名的本质2. 使用指针访问数组3. 一维数组传参的本质4. 二级指针5. 指针数组5.1 指针数组模拟二维数组 正文开始。 1. 数组名的本质 数组名代表着这个数组中第一个元素的地址 例如: int arr[4] { 1,2,3,4 }; int *p1 &arr[0]; int *p2 arr;上述…

前端学习<四>JavaScript基础——22-立即执行函数

立即执行函数 IIFE 概念 函数定义完,就立即被调用,这种函数叫做立即执行函数。英文是 IIFE(Immediately-invoked function expression),立即调用函数表达式。 语法格式 语法1: (function() {// 函数体}…

【智能优化算法】河马优化算法(Hippopotamus optimization algorithm,HO)

河马优化算法(Hippopotamus optimization algorithm,HO)是发表在中科院二区期刊“Scientific Reports”的文章“Hippopotamus Optimization Algorithm: a Novel Nature-Inspired Optimization Algorithm”上的算法。 01.引言 河马优化算法&a…

RK3568平台开发系列讲解(Linux系统篇)设备树中断的属性

🚀返回专栏总目录 文章目录 一、RK ft5x06 设备树节点案例二、interrupts属性三、interrupt-controller属性四、interrupt-parent属性五、#interrupt-cells 属性沉淀、分享、成长,让自己和他人都能有所收获!😄 📢设备树中断的属性介绍。 一、RK ft5x06 设备树节点案例…

响应式导航栏不会做?看我一分钟学会制作导航栏!

引言 随着互联网技术的飞速发展,用户体验在网页设计中的重要性日益凸显。其中,导航栏作为网页的“指南针”,不仅能帮助用户快速定位所需内容,还能体现网站的整体风格和设计理念。本文将介绍如何使用HTML、CSS和JavaScript制作一个…

SpringBoot 微服务token 传递实现

1、前言 随着微服务的流行,微服务之间的安全以及业务需要,都需要穿递token ,而token的传递一般通过header 头来传递。从架构的角度来讲 ,一般的企业应用都由nginx、业务网关和各个微服务组成。这个nginx 传递header 我就不讲述。下…

[附带黑子定制款鸽鸽版素材包]更改文件夹图标,更改系统音效,更改鼠标指针及样式。

更改文件夹图标 1.选择图片在线格式转换网站转换为ico格式 2.右键文件夹选择属性 3.点击自定义,点击更改图标超链接 4.点击预览选择生成的ico文件 5.点击打开,点击确定,点击应用 更改系统音效(真爱粉强烈推荐) 1…

react query 学习笔记

文章目录 react query 学习笔记查询客户端 QueryClient获取查询客户端 useQueryClient异步重新请求数据 queryClient.fetchQuery /使查询失效 queryClient.invalidateQueries 与 重新请求数据queryClient.refetchQueries 查询 QueriesuseQuery查询配置对象查询的键值 Query Key…

老板最怕你出这样的代码。。。

大家好, 这一个月时间,阿里巴巴、滴滴、腾讯都发生过应用线上故障的事情,很多同学说是降本增“笑”的后果然后圈内流传一个新想法,为了避免“开源节流” 的事情,工作中要写一些防御性的代码。 什么意思?就…

现代电商会员管理新玩法——付费会员

现在,无论是线上还是线下,几乎都在做会员管理。会员规则五花八门,不仅有常见的注册会员,还出现了付费会员。付费会员机制,从成为会员的第一步就开始筛选,选出粘性高、要求高、复购高且有一定消费力的用户群…

JVM、maven、Nexus

一、jvm简介 1.应用程序申请内存时出现的三种情况: ①OOM:内存溢出,是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。此时程序就运行不了,系统会提示内存溢出&#xff0c…