记录一次alignment fault
alignment fault
- 问题现象
- 问题原因
- 解决方法
问题现象
最近在调试程序的时候,发现会有异常退出情况,错误提示为:alignment fault。
通过gdb 调试发现是在std::cout 是对double类型的输出有问题,导致了此次的alignment fault。
问题原因
在我的程序中用到了1字节对齐,结构体内容大体上像下面这种结构,导致了double夸字节访问,
在ARM处理器中对非对齐内存访问不是特别友好。
alignment fault具体介绍参考另一篇博客
#param pack(1)
struct test
{char testc;double testd;
};
#param pack()
测试时还发现,正常使用没有问题,但是通过流输出是就会出现异常。
正常使用:
struct test mT;
if(mT.testd > 3.44)
{}
解决方法
为了能够通过流进行输出,最后通过封装一层结构,达到内存对齐。
如此封装之后就可以正常使用了,因为double达到了8字节对齐。
#param pack(1)
struct test
{char testc;double testd;
};
struct testFix
{char testFixC[7]struct test testStr;
}
#param pack()
记录一次alignment fault相关推荐
- alignment fault
什么是对齐异常? 简单来说,当CPU访问内存地址时,如果发现访问的地址是不对齐的,硬件(部分)就会自动触发对齐异常.对齐即要求被访问的地址满足其数据类型的位宽要求,比如要访问一个4字节int型的数据, ...
- ARM非对齐访问和Alignment Fault
转载自ARM非对齐访问和Alignment Fault - 者旨於陽 - 博客园 (cnblogs.com) 1.指令对齐 A64指令必须word对齐.尝试在非对齐地址取值会触发PC alignmen ...
- 闲聊对齐异常(alignment fault)
闲话 最近在ARM64环境中遇到了alignment fault,之前没怎么了解过,这次趁分析问题的机会,做了相关了解,还是比较有内容,特此闲聊. 什么是对齐异常? 简单来说,当CPU访问内存地址时, ...
- IMX6ULL学习笔记(18)——GPIO中断
一.中断简介 相比 STM32 的 NVIC,IMX6ULL 的中断控制系统更复杂,它的中断管理器使用的是 GIC V2,GIC V2 的实现方式与我们熟知的 NVIC 差别较大. 1.1 GIC G ...
- arm linux kernel 从入口到start_kernel 的代码分析
Linux系统启动过程分析(主要是加载内核前的动作) 经过对Linux系统有了一定了解和熟悉后,想对其更深层次的东西做进一步探究.这当中就包括系统的启动流程.文件系统的组成结构.基于动态库和静态库的程 ...
- imprecise external abort
文章目录 Background Debug What is imprecise abort? Background CPU: ARMv7 开机到kernel某个固定阶段发生死机,死机信息都是impre ...
- Uboot中start.S源码的指令级的详尽解析
Uboot中start.S源码的指令级的详尽解析 版本:v1.9 Crifan Li 摘要 本文对Uboot中的Start.S的源码的几乎每一行,都进行了详细的解析 本文提供多种格式供: 在线阅读 H ...
- Linux内存管理内存映射以及通过反汇编定位内存错误问题
提到C语言,我们知道C语言和其他高级语言的最大的区别就是C语言是要操作内存的! 我们需要知道--变量,其实是内存地址的一个抽像名字罢了.在静态编译的程序中,所有的变量名都会在编译时被转成内存地址.机器 ...
- Concepts:Stateful Stream Processing
Stateful Stream Processing 有状态流处理 What is State? 状态是什么? While many operations in a dataflow simply l ...
最新文章
- 玩转Docker Ceph集群及对象存储
- 【数据分析】太秀了!用Excel也能实现和Python数据分析一样的功能!
- setInterval(callback(),time)
- 从地址栏中敲入一个网址,到网页显示出来,这个过程经历了什么
- 计算机用户文件夹怎么改名称,win10修改用户名文件夹方法_win10怎么改用户文件夹名称-win7之家...
- python手写识别系统gui_求大神帮助,怎么用wxpython编写一个数字手写体识别系统!...
- LC.234.Palindrome Linked List
- 基于单片机设计的遥控数字音量控制D类功率放大器设计
- 在 Java 应用程序中访问USB设备
- 寻找与黄金分割点最近的商
- 我想给我的公众号改个名,好不好嘞
- Linux程序包管理命令之rpm
- 易企秀HTML5文件,怎么用易企秀制作h5场景秀?
- 关于支付宝服务商模式的刷卡支付没有分润的问题
- iPhone的设置中,找不到“开发者选项”
- hbase基于solr配置二级索引
- Minimal Area
- 字典破解密码实验(Python3)
- 摄影几何基础知识(1)
- 无法将“pytest”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
热门文章
- 《Dreamweaver CS6 完全自学教程》笔记 第六章:使用表格进行网页布局
- 用 TimingLaba(时方校园定时广播系统)软件,实现学校、办公室定时播放体操、上下课(班)铃声、休息音乐
- 蓝桥杯单片机——用NE555定时器来测量频率
- flutter iOS配置
- 会计学原理名词解释和简答
- 忻州计算机cad培训,忻州CAD三维建模培训cad三维制图教程
- [转]Java 实现 POS 打印机无驱打印
- ryu实例---自学习交换机
- 他两次都没能感动中国,不知道有没有感动我们[转载]
- uni-app自定义组件(数据传递、自定义弹框、自定义图片选择)