sigbus内存错误
2019独角兽企业重金招聘Python工程师标准>>>
编写跨平台代码时,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(...));这样一个字节一个字节地拷贝到副本里面
又比如
转载于:https://my.oschina.net/kkkkkkkkkkkkk/blog/898929
sigbus内存错误相关推荐
- c/c++动态检测内存错误利器 - ASan
ASan,即Address Sanitizer,是一个适用于c/c++的动态内存错误检测器,它由一个编译器检测模块(LLVM pass)和一个替换malloc函数的运行时库组成,在性能及检测内存错误方 ...
- Android稳定性系列-01-使用 Address Sanitizer检测原生代码中的内存错误
前言 想必大家曾经被各种Native Crash折磨过,本地测试没啥问题,一到线上或者自动化测试就出现各种SIGSEGV.SIGABRT.SIGILL.SIGBUS.SIGFPE异常,而且堆栈还是崩溃 ...
- 【linux】Valgrind工具集详解(七):Memcheck(内存错误检测器)
一.概述 Memcheck是一个内存错误检测器.它可以检测C和C ++程序中常见的以下问题: 1.非法内存:如越界.释放后继续访问: 2.使用未初始化的值: 3.释放内存错误:如double-free ...
- 动态检测内存错误利器ASan
ASan,即Address Sanitizer,是一个适用于c/c++程序的动态内存错误检测器,它由一个编译器检测模块(LLVM pass)和一个替换malloc函数的运行时库组成,在性能及检测内存错 ...
- Linux启动检测内存条错误,linux检测程序内存泄漏和内存错误
在linux的开发程序的时候,可以很方便的使用valgrind这个工具方便检测内存泄漏和内存错误. 安装很方便: debian(如ubuntu) sudo apt-get install valgri ...
- 内存错误 处理 [CAlayer release]
再出现内存错误时..重现操作..想可能释放掉的对象delloc中又没有重复释放的对象..再就是屏蔽掉一些准备释放的对象..看看爆机会不会消失..知道..找到导致爆机的被释放对象! 转载于:https: ...
- python random.choice报错_如何解决mtrand.RandomState.choice中的内存错误...
我试图从1e5字符串中抽取1e7个项目,但是出现内存错误.从1e4字符串中抽取1e6项是很好的.我在64位机器上使用4GB RAM,并且不认为我应该在1e7达到任何内存限制.有任何想法吗? $pyth ...
- 谈谈如何利用 valgrind 排查内存错误
谈谈如何利用 valgrind 排查内存错误 - 云+社区 - 腾讯云 (tencent.com) 高性能服务器开发关于Socket编程的内容 - 云+社区 - 腾讯云 (tencent.com)
- C语言程序设计 | 动态内存管理:动态内存函数介绍,常见的动态内存错误,柔性数组
动态内存管理目录: 动态内存函数的介绍 常见的动态内存函数的错误 柔性数组 为什么会有动态内存管理呢 我们在日常使用中,创建一个数组,一个变量时都会开辟空间 如: int a; //在栈上开辟一个四字 ...
最新文章
- python 英语翻译 excel_python批量将excel内容进行翻译写入功能
- python输出中文加数字_python处理“#”开头加数字的html字符方法
- boost::strong_components用法的测试程序
- Cocos2d-X中的ZORDER和Tag
- JavaWeb——拦截器HandlerInterceptor
- java day17 【线程、同步】
- 书籍之 Head First HTML与CSS
- Ubuntu20.04安装教程
- FBreader多端同步心得补充
- 作为一名软件测试工程师,需要具备哪些能力?
- Lenovo 10w 平板评测
- Vue项目实现点击图标拨打电话
- 模拟卷Leetcode【普通】714. 买卖股票的最佳时机含手续费
- 如何定义一个具有返回值的函数
- python 移动平均函数_「EMA系列之I」如何理解EMA指数移动平均值以及Python实现
- 机器人HEXA登陆DEFCon黑客大会,上演拆弹竞赛
- 使用Webdriver进行自动化测试--ljw
- 视频知识点(20)- H264码流如何在SPS中获取宽高信息?
- 《算法设计编程实验:大学程序设计课程与竞赛训练教材》——2.4 相关题库...
- 水位传感器c语言程序,简单水位报警器(水浸传感器)单片机源码
热门文章
- ls -l的编程实现
- 刘强东痛批京东中高层用 PPT 欺骗自己,网友:“我领导也天天被写 PPT 的忽悠……”
- 计算置信度和置信区间
- 使用MACS2进行差异peak分析
- Android高级编程(奋斗之小鸟)_PDF 电子书
- 2020免费稳定php空间,国外稳定的免费PHP空间byethost.com
- POI及EasyExcel操作xls,xlsx文件
- JavaScript与垃圾回收(GC)---实现篇
- 使用NetTopologySuite将shp文件转为GeoJson格式
- linux系统应用管道展望,linux学习——管道