文档章节

sigbus内存错误

梦想游戏人
 梦想游戏人
发布于 2017/05/13 19:10
字数 328
阅读 350
收藏 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
博文 423
码字总数 120460
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

Mac OS X下Maven的安装与配置

Mac OS X 安装Maven: 下载 Maven, 并解压到某个目录。例如/Users/robbie/apache-maven-3.3.3 打开Terminal,输入以下命令,设置Maven classpath $ vi ~/.bash_profile 添加下列两行代码,之后...

TonyStarkSir
今天
3
0
关于编程,你的练习是不是有效的?

最近由于工作及Solution项目的影响,我在重新学习DDD和领域建模的一些知识。然后,我突然就想到了这个问题,以及我是怎么做的? 对于我来说,提升技能的项目会有四种: 纯兴趣驱动的项目。即...

问题终结者
今天
4
0
打开eclipse出现an error has occurred see the log file

解决方法: 1,打开eclipse安装目录下的eclipse.ini文件; 2,打开的文本文件最后添加一行 --add-modules=ALL-SYSTEM 3,保存重新打开Eclipse。...

任梁荣
昨天
4
0
搞定Northwind示例数据库,无论哪个版本的SQLServer都受用

Northwind数据库 从这里可以找到突破口: http://social.msdn.microsoft.com/Forums/zh-CN/Vsexpressvb/thread/8490a1c6-9018-40c9-aafb-df9f79d29cde 下面是MSDN: http://msdn2.microsoft......

QQZZFT
昨天
1
0
mysql主从同步,安装配置操作

准备 两台mysql服务,我这里准备了如下: 主库:192.168.176.128 从库:192.168.176.131 如何在Linux上安装mysql服务,请看https://blog.csdn.net/qq_18860653/article/details/80250499 操作...

小致dad
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部