linux 结构体 aligned,__attribute__((__aligned__(n)))对结构体对齐的影响

2023-11-04

1. __attribute__ 是什么?

__attribute__是GCC里的编译参数,用法有很多种,感兴趣可以阅读一下gcc的相关文档。这里说一下__attribute__对变量和结构体对齐的影响。这里的影响大概分为两个方面,对齐和本身占用的字节数的大小,即sizeof(变量)的值。

2. __attribute__((__aligned__(n)))对变量的影响

使用的语法如下:

int a attribute((aligned(64))) = 10;

这个修饰的影响主要是对齐,所谓对齐是存储为值的起始地址。变量a的地址&a,本来是4字节对齐,变成了64字节对齐(有的环境对最大对齐数值有限制)。64字节对齐就是&a的最后6位为0。

sizeof(a) = 4; //a 占用的字节数还是4个字节

下面看看在使用了typedef之后对对齐和变量大小的影响:

typedef int myint attribute((aligned(64))) ;

sizeof(myint) = 4; //占用的字节数还是4个字节

这样说明myint 声明的变量按照64字节对齐,大小是4字节,这样就会有一个问题,这个变量不能定义数组:

myint myarray[2]; //这样定义编译器会报err

报错的原因是数组的存储在内存中是连续的,而myint只有4字节确要64字节对齐,这样对齐和连续就不能同时保证,就会报错。

3. __attribute__((__aligned__(n)))对结构体的影响

先定义一个结构体

typedef struct st_tag {

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux 结构体 aligned,__attribute__((__aligned__(n)))对结构体对齐的影响 的相关文章

  • Nacos与Eureka的异同

    1 架构设计 Eureka采用CS架构 由服务注册中心Eureka Server和服务提供者 消费者Eureka Client组成 Nacos采用高可用的P2P设计 无主节点 所有的server节点都是同等作用 支持AP和CP两种模式 2
  • Android 自动获取经纬度,计算距离、经纬度、方位角

    最近做一个项目需要通过GPS获取经纬度 通过计算算出两点之间的距离 通过对Google和百度的疯狂轰炸 终于找到了解决的办法 首先声明权限 android name android permission ACCESS FINE LOCATI
  • Scrcpy视频同步源码分析

    什么是Scrcpy https github com Genymobile scrcpy Scrcpy是genymobile开源的一款手机镜像软件 通过对手机音视频的采集和同步 可以实现在PC平台上控制手机的功能 官方解释 此应用程序镜像通
  • PHP Drupal个人博客

    PHP Drupal个人博客 官网 Prerequisite PHP Composer 快速安装 composer create project drupal recommended project drupal cd drupal php
  • lucene 总体架构

    本文转载至 http www cnblogs com forfuture1978 archive 2009 12 14 1623596 html Lucene概述 一个高效的 可扩展的 全文检索库 全部用Java实现 无须配置 仅支持纯文本
  • 混合整数规划(Mixed Integer Programming)

    混合整数规划 Mixed Integer Programming 混合整数规划问题是运筹优化中经常遇到的一类问题 在这类问题中自变量的类型可能是整数也可能不是整数 相比于连续优化 混合整数规划很多时候会更难求解 在学术界混合整数规划一直是一
  • 最小生成树(普里姆算法和克鲁斯卡尔算法)

    1 基本介绍 2 普里姆算法 普里姆算法 package algorithm import java util Arrays public class PrimDemo public static final int MAX VALUE 1
  • 从p文件到m文件,快速将Matlab p代码转换成m文件

    你是否遇到过这样的问题 发现自己写的Matlab代码根本无法加密 或者别人发给你的MATLAB代码无法打开或运行 如果是这样 那么你需要一款强有力的Matlab解密工具 左左Matlab解密助手 左左解密助手是一款功能强大的Matlab解密
  • 状态机模型

    参考 什么是状态机 用C语言实现进程5状态模型 参考 设计模式 一目了然的状态机图 案例 状态模式 C语言实现 MP3播放 暂停案例 STM32按键消抖 入门状态机思维 常用的while循环内switch case形式 实现状态机的状态跳转
  • java自动化测试语言基础之正则表达式

    java自动化测试语言基础之正则表达式 文章目录 java自动化测试语言基础之正则表达式 Java 正则表达式 Java 正则表达式 正则表达式定义了字符串的模式 正则表达式可以用来搜索 编辑或处理文本 正则表达式并不仅限于某一种语言 但是
  • 树莓派 OCR识别 2-2:chineseocr_lite 部署

    chineseocr lite github项目地址 https github com ouyanghuiyu chineseocr lite 超轻量级中文ocr 支持竖排文字识别 支持ncnn推理 dbnet 1 8M crnn 2 5M
  • JAVA 获取某段时间内的所有日期集合

    集合里包含月份 开始 结束 2019 01 01 00 00 00 2019 01 31 23 59 00 2019 02 01 00 00 00 2019 02 28 23 59 00 2019 03 01 00 00 00 2019 0
  • 社区生鲜团购小程序

    摘 要 随着生活质量的提高 人们对生鲜购物体验的要求逐步升级 传统生鲜物流成本相对较高 生鲜产品品质控制困难 在新零售背景下的社区生鲜团购模式拥有经营成本低 用户黏性高等优点 互联网与实体店相结合带来了更多的便利和机会 自微信推出以来 就迅
  • 39. 组合总和 40. 组合总和 II

    39 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target 找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 并以列表形式返回 你可以按 任意顺序 返回这些组合
  • Java文档注释用法+JavaDoc的使用详解

    Java文档注释 JavaDoc的使用详解 简介 文档注释负责描述类 接口 方法 构造器 成员属性 可以被JDK提供的工具 javadoc 所解析 自动生成一套以网页文件形式体现该程序说明文档的注释 注意 文档注释必须写在类 接口 方法 构
  • spring boot中使用@requestbody注解接收不到值是什么鬼

    首先 先科普一下这个注解的用法吧 requestbody一般是用于put或post请求时 在controller处接收前端发送的值 通过适当的HttpMessageConverter转换为JAVA类 而前端在发送值的时候必须指定数据是jso
  • “泰迪杯”超市Spark数据处理和数据分析项目实战Dataframe

    数据和代码 2019 年 泰迪杯 数据分析职业技能大赛 超市销售数据分析 一 背景 近年来 随着新零售业的快速发展 消费者购买商品时有了更多的对比和 选择 导致超市行业的竞争日益激烈 利润空间不断压缩 超市的经营管理产 生了大量数据 对这些
  • WINDOWS下使用redi并安装成系统服务开机启动

    WINDOWS下使用redis 下载redis源码 解压使用 将redis安装成window系统服务 不显示黑窗口 下载redis源码 linux下的redis可以再redis官网上找到Statble版本并下载 但是window版本在官网上
  • 实践练习三(可选):使用OBD 部署一个 三副本OceanBase 集群(离线安装)

    部署规划 这次作业是OceanBase 集群三节点部署方法 通过中控机直接远程登录到 OceanBase 节点上部署启动 observer 和 obproxy 进程 由于手上正好有7台物理机 所以在这个作业中会使用OBD直接部署为2 2 2

随机推荐

  • PAT甲级2023夏季考试题解(A-1 Trap,A-2 Queue Using Two Stacks,A-3 Rank of Binary Tree,A-4 Big Number)

    很幸运得到了一个满分 最后一题真的是连蒙带猜的AC的 当AC的那瞬间 可以用喜极而泣来形容了 去年十二月也参加了一次甲级 但是才考到89分 不是很满意 因此这次又去参加了一次 但总算得到了一点收获 也算对自己的一点安慰吧 A 1 Trap
  • 基于MATLAB的字母识别系统

    一 算法步骤 1 测试图像预处理及连通区域提取 2 样本库的建立采集feature 3 选择算法输入测试图像进行测试 二 识别过程 源码 1 连通区域提取分割 在原图的基础上进行了膨胀 腐蚀 膨胀的操作使截取的图像更加接近字母 提取数字的边
  • 微信小程序组件、web-view、h5之间交互

    目录结构 component index page index js index wcss index wxml index json pages index index wcss index wxml index js index jso
  • 设置VS编译选项使程序不需要带DLL在任意Windows系统上正常运行

    背景 初学编程的时候 那时使用的开发环境是VC6 0 使用VC6 0编译的控制台程序或者是DLL 直接编译出来就可以在其他平台上运行或是调用 不需要额外加载运行库DLL等等 使用VC6 0编译出来的MFC程序 编译的时候设置下在静态库中使用
  • vue2和vue3组件传值——父传子

    近期学习vue3的组件传值 发现和之前的vue2版本并没有什么区别 实现的思路都是一样的 文章底部我会用大白话叙述一下vue组件传值的思路过程 下面就一起学习vue的组件传值吧 不足之处大家多批评指正 vue2 父传子
  • [Sqlite] Java使用jdbc连接Sqlite数据库进行各种数据操作的详细过程

    前言 SQLite是遵守ACID 的关系型数据库管理系统 它包含在一个相对小的C库中 它是D RichardHipp建立的公有领域项目 不像常见的客户 服务器范例 SQLite引擎不是个程序与之通信的独立进程 而是连接到程序中成为它的一个主
  • 程序员的思考方式

    思考方式及状态进入 工作产出不是由写代码的效率决定的 一些不恰当的工作方法很大程度影响着你的产出 首先要问自己三个问题 我现在是一个什么水平 我想达到什么水平 我将怎样达到那个目标 这三个问题实际上是帮我们确定 现状 目标 实现路径 如果一
  • 数据结构-判断平衡二叉树(java)

    判断平衡二叉树 题目 力扣110题 解题思路 1 首先理解平衡二叉树的定义 使用Map存储每个节点的高度 2 求得当前节点的左右子树高度 若Map中左右子树高度已经求过 直接取得 若没有 通过递归计算高度并存入Map中 3 左右子树高度差
  • 前端 正则校验 手机号格式(电话和座机)

    最近项目需要对手机号格式进行校验 话不多说直接上代码 d 3 4 0 9 7 8 1 3 4 5 6 7 8 9 d 9 手机号 校验开头和总位数 座机校验开头
  • 通用定时器③-输入捕获(IC)

    输入捕获 Input Capture 输入捕获模式下 当通道输入引脚出现指定电平跳变时 当前CNT的值将被锁存到CCR中 可用于测量PWM波形的频率 占空比 脉冲间隔 电平持续时间等参数每个高级定时器和通用定时器都拥有4个输入捕获通道可配置
  • 从ISO 42010 软件架构描述标准提炼架构概要

    一 概念基础 概念基础包括 1 架构说明的概念模型 2 架构在生命周期中的角色 3 架构说明的使用 4 架构框架和架构说明语言 上图是 系统说明的上下文 一个系统位于一个环境中 环境决定了整个生命周期中施加于系统的所有影响 包括系统在 环境
  • gdb多线程、进程调试

    最近gdb调试主线程起的子进程不知该怎么做 搜索一番如下GDB多线程多进程调试 码农教程j j 1 follow fork mode 方法 2 attach 子进程方法GDB调试fork exec创建的子进程的方法 走看看 详细使用例子 我
  • ESP32S3系列--SPI主机驱动详解(一)

    一 目的 SPI是一种串行同步接口 可用于与外围设备进行通信 ESP32S3自带4个SPI外设 其中SPI0 SPI1内部专用 共用一组信号线 通过一个仲裁器访问外部Flash和PSRAM SPI2 3各自使用一组独立的信号线 开发者可以使
  • 阿里云 服务器 部署项目 连接 同一台服务器 mysql 数据库失败 Communications link failure

    现象描述 阿里云 服务器安装了mysql 数据库 在同一台服务器发布项目 本地电脑idea 启动项目 和cmd 启动项目都能正常启动 可以连接到数据库 本地电脑 navicat 也能访问阿里云数据库 连接信息配置如下 spring data
  • 如何列出PostgreSQL中的所有用户

    From the psql interface run the du command 在psql界面中 运行 du命令 This will give you the list of all users in the system plus
  • 堆的应用(堆排序、TOP - K问题)

    前言 时间复杂度 堆排序的最坏时间复杂度为 O n lg n TOP K问题的最坏时间复杂度为 O n lg k 前面我们学习了二叉树 以及堆的结构 也用顺序表的结构成功的把堆的结构一步一步的敲出来了 IT公司的吉祥 树 二叉树 堆 C语言
  • C#计算20902个汉字的拼音首字母

  • SSM 提示 http://java.sun.com/jsp/jstl/core] cannot be resolved in either web.xml or the jar files dep

    错误的jsp 页面
  • 计算机网络3——传输层(上)

    目录 一 概述 二 多路复用和多路分用 1 无连接分用 2 面向连接的分用 三 无连接传输协议UDP 四 可靠数据传输原理 1 Rdt 1 0 2 Rdt 2 0 3 Rdt 2 1和2 2 4 Rdt 3 0 五 流水线机制与滑动窗口协议
  • linux 结构体 aligned,__attribute__((__aligned__(n)))对结构体对齐的影响

    1 attribute 是什么 attribute 是GCC里的编译参数 用法有很多种 感兴趣可以阅读一下gcc的相关文档 这里说一下 attribute 对变量和结构体对齐的影响 这里的影响大概分为两个方面 对齐和本身占用的字节数的大小