文档章节

sigbus内存错误

梦想游戏人
 梦想游戏人
发布于 2017/05/13 19:10
字数 328
阅读 261
收藏 0
点赞 0
评论 0

编写跨平台代码时,ARM不支持非对齐的内存访问,x86支持,跨平台C++代码容易出现以下问题

sigbus意思是该地址有效,但是总线不能读取,具体错误信息有以下三种

BUS_ADRALN 未对齐的内存

BUS_ADRERR 不存在的物理地址

BUS_OBJERR 硬件错误

 

BUS_ADRALN 一般是类型转换导致的,比如

由于对齐,多出来的3个字节并没有初始化为0,ptr1按照int来解析内存,能顺利读取到后面3个字节,因为内存是合法的,虽然数据不对,但是对于没有对齐的话,那么按照ptr1的地址解析int 就会出错,因为虽然ptr1指针的地址是合法的,但是只有一个字节,并没有多出3个字节。如果CPU支持非对齐内存的访问的话,把3个字节当做0处理即可,但是部分ARM系列并不支持。这类代码编写跨平台就很容易BUG。

这种问题的解决方案之一是,用sizeof 和 char*最小的 基本数据内存块来对内存解析,

简单粗暴就是memcpy(..,..,sizeof(...));这样一个字节一个字节地拷贝到副本里面

 

又比如

 

 

 

© 著作权归作者所有

共有 人打赏支持
梦想游戏人
粉丝 34
博文 412
码字总数 116555
作品 0
成都
ios开发之crash日志收集,以及分析

在ios开发过程,当应用已经打包,iPhone设备通过ipa的包安装应用后,在使用过程发现crash,那么如何获取crash日志呢,现提供如下四种获取crash日志的方式: 1、打开iPhone设备的设置里面的隐私...

HillYoung
2015/03/16
0
0
【PHP】如何优雅的杀死PHP的死循环(常驻进程)

在日常开发的过程中,遇到一个问题,就是 有这么一个常驻进程,每隔6秒,干一些事情,这个时候,突然出了一些意外状况或者要迭代版本,得先给这个进程停掉,打断循环退出。如果直接kill掉,那...

qq_28602957
2017/10/31
0
0
linux的运维管理UNIT7

################## ### 进程的定义 ### ################## 触发任何一个事件时,系统都会将它定义成为一个进程,并且给予这个进程一个ID,称为PID。 进程就是CPU未完成的工作 *)区别程序和...

季凉末一
2017/05/10
0
0
[iOS开发]使用signal让app能够在从容崩溃

前言 虽然大家都不愿意看到程序崩溃,但可能崩溃是每个应用必须面对的现实,既然崩溃已经发生,无法阻挡了,那我们就让它崩也崩得淡定点吧。 iOS SDK中提供了一个现成的函数 NSSetUncaughtE...

浩浩老师
2015/09/07
350
0
LINUX 信号概念详解

LINUX 信号概念详解 我们运行如下命令,可看到Linux支持的信号列表: # kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE9) SIGKILL 10) SIGUSR1......

crushlinux
2014/05/15
0
0
Linux 信号详解

Linux 信号详解 X-Space2017-12-210 阅读 Linux LINUX 信号概念详解 我们运行如下命令,可看到Linux支持的信号列表: 编号为1 ~ 31的信号为传统UNIX支持的信号,是不可靠信号(非实时的),编号...

X-Space
2017/12/21
0
0
linux下的trap命令和SIGHUP信号量详解,CTRL C是多少

一、关于信号 历史上,shell总是用数字来代表信号,而新的脚本程序应该使用信号的名字,它们保存在用#include命令包含进来的signal.h头文件中,在使用信号名时需要省略SIG前缀。 kill和trap等...

长平狐
2012/06/12
681
0
iOS应用的crash日志的分析基础

iOS应用的crash日志的分析基础 Outline 如何获得crash日志 如何解析crash日志 如何分析crash日志 1. iOS策略相关 2. 常见错误标识 3. 代码bug 一、如何获得crash日志 当一个iOS应用程序崩溃时...

法斗斗
2015/10/08
44
0
Linux getrlimit和setrlimit函数

表头文件:#include <sys/resource.h> 定义函数:

吃一堑消化不良
2016/11/02
33
0
Linux--进程 ps 用户登陆

一、进程定义 进程就是cpu未完成的工作 二、ps命令 ps a ##关于当前环境的所有进程 x ##与当前环境无关的所有进程 f ##显示进程从属关系 e ##显示进程调用环境工具的详细信息 l ##长列表显示...

無緣
2017/10/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

微信小程序Java登录流程(ssm实现具体功能和加解密隐私信息问题解决方案)

文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源。 一、登录流程图 二、小程序客户端 doLogin:function(callback = () =>{}){let ...

公众号_好好学java
27分钟前
0
0
流利阅读笔记28-20180717待学习

“我不干了!” 英国脱欧大臣递交辞呈 雪梨 2018-07-17 1.今日导读 7 月 6 日,英国政府高官齐聚英国首相的官方乡间别墅——契克斯庄园,讨论起草了一份关于英国政府脱欧立场的白皮书。可是没...

aibinxiao
56分钟前
6
0
OSChina 周二乱弹 —— 理解超算排名这个事,竟然超出了很多人的智商

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @-冰冰棒- :分享Ed Sheeran/Beyoncé的单曲《Perfect Duet (with Beyoncé)》 《Perfect Duet (with Beyoncé)》- Ed Sheeran/Beyoncé 手机...

小小编辑
今天
93
7
Android 获取各大音乐平台的真实下载地址

废话 电脑使用谷歌浏览器或者QQ浏览器的时候。。。。。。。说不清楚,还是看图吧 大概意思就是,只要网页上需要播放,只要能播放并且开始播放,这个过程就肯定会请求到相关的音乐资源,然后就...

她叫我小渝
今天
0
0
shell中的函数、shell中的数组、告警系统需求分析

shell中的函数 格式: 格式: function f_name() { command } 函数必须要放在最前面 示例1(用来打印参数) 示例2(用于定义加法) 示例3(用于显示IP) shell中的数组 shell中的数组1 定义数...

Zhouliang6
今天
2
0
用 Scikit-Learn 和 Pandas 学习线性回归

      对于想深入了解线性回归的童鞋,这里给出一个完整的例子,详细学完这个例子,对用scikit-learn来运行线性回归,评估模型不会有什么问题了。 1. 获取数据,定义问题     没有...

wangxuwei
今天
1
0
MAC安装MAVEN

一:下载maven压缩包(Zip或tar可选),解压压缩包 二:打开终端输入:vim ~/.bash_profile(如果找不到该文件新建一个:touch ./bash_profile) 三:输入i 四:输入maven环境变量配置 MAVEN_HO...

WALK_MAN
今天
0
0
33.iptables备份与恢复 firewalld的9个zone以及操作 service的操作

10.19 iptables规则备份和恢复 10.20 firewalld的9个zone 10.21 firewalld关于zone的操作 10.22 firewalld关于service的操作 10.19 iptables规则备份和恢复: ~1. 保存和备份iptables规则 ~2...

王鑫linux
今天
2
0
大数据教程(2.11):keeperalived+nginx高可用集群搭建教程

上一章节博主为大家介绍了目前大型互联网项目的系统架构体系,相信大家应该注意到其中很重要的一块知识nginx技术,在本节博主将为大家分享nginx的相关技术以及配置过程。 一、nginx相关概念 ...

em_aaron
今天
1
1
Apache Directory Studio连接Weblogic内置LDAP

OBIEE默认使用Weblogic内置LDAP管理用户及组。 要整理已存在的用户及组,此前办法是导出安全数据,文本编辑器打开认证文件,使用正则表达式获取用户及组的信息。 后来想到直接用Apache Dire...

wffger
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部