关于 Mac OS系统中编程时出现的segment error 和bus error原因描述
在c程序中,经常会遇到段错误(segment error)和总线错误(bus error),这两种问题出现的原因可能如下
- 段错误:
- 对一个NULL指针解引用。
- 访问程序进程以外的内存空间。
实际上,第一个原因可以规约到第二个原因,在一个c程序的虚拟内存空间中,从低地址到高地址一次是代码区,堆区(向上增长),栈区(向下增长),最上是常量区,其中NULL指针的位置正好是虚拟内存中地址为0的位置,而这个位置是不属于以上4个区域的,同理一些比较低的地址也不属于这四个区,所以造成段错误的原因是访问了程序虚拟内存空间4个区以外的地址,在平时的开发中,最大的可能还是对NULL进行了解引用。
- 总线错误
- 对一个错误的起始地址进行解引用
由于进程的虚拟内存空间实际上是对物理地址的一个映射,操作系统和编译器会用内存对齐来做优化,通常就是4字节对齐,所以int,float这种类型的起始地址都是4的倍数,而short的起始地址是2的倍数,double的起始地址是8的倍数,假如此时对一个不是4倍数的地址a进行解引用 (int *) a,就可能会出现总线错误,这个出现的情况还要具体看是哪一种操作系统。总线错误一般不会出现,出现的情况多半是使用了指针的强制转换。
有了以上分析就能在遇到这些问题时有处理的思路了。
以上内容原文博客地址:http://www.cnblogs.com/xpray/p/3491186.html
关于 Mac OS系统中编程时出现的segment error 和bus error原因描述相关推荐
- 如何在苹果Mac OS系统中安装MT4电脑版软件?
很多投资者可能已经发现了,当前市面上绝大部分的正规交易平台,都在使用MT4电脑版软件作为平台专用的交易工具.而市面上的电脑系统主要又分为微软Windows系统和苹果Mac OS系统,对于微软Windo ...
- python怎么换背景_python – 我如何在Mac OS X中编程改变背景?
从python,如果你已经安装了 appscript(sudo easy_install appscript),你可以简单地做 from appscript import app, mactypes ...
- mac安装完python怎么打开-Mac OS系统如何安装python
Mac OS安装python步骤 如果你使用苹果电脑的 Mac OS 系统,下载时,请进入 https://www.python.org/页面,选择Downloads,在弹出的菜单中选择Mac OS ...
- 黑苹果更改时间命令_从命令行设置Mac OS X中的系统时间 | MOS86
默认情况下,Mac OS X中的时钟自动设置,但如果要设置精确时间或正在寻找命令行解决方案来设置系统时间,则可以使用名为ntpdate的工具或标准日期命令来执行此操作. 在Mac OS X中使用中央时 ...
- 用U盘在Mac OS X中安装Windows7系统
原文:http://pc.it168.com/a2012/0207/1308/000001308319_1.shtml [IT168 应用]有苹果电脑的用户希望在Mac OS X系统安装Windows ...
- Mac OS X 中的脚本语言应用
http://www.applesupport.com.cn/newshow.asp?id=2442&cid=7 如你所见,Mac OS X 是一套广受程序员喜爱的操作系统,他们之所以如此喜欢 ...
- MAC OS X 技术内幕 学习笔记之四 MAC OS系统的启动引导
MAC OS X 技术内幕 学习笔记之四 MAC OS系统的启动引导 MAC OS的启动非常快,同样的运行硬件环境,运行MAC系统感觉比运行windows系统要快不少.在使用笔记本时,同样的电池容量, ...
- 在Mac OS X中配置Apache + PHP + MySQL
内容如下: 1. 启动Apache 2. 设置虚拟主机 3. 运行PHP 4. 安装MySQL 5. 使用phpMyAdmin 6. 配置PHP的MCrypt扩展库 7. GD库安装 8. 增加 ...
- mac 不能连接wi-fi_如何在Mac OS X中查看当前的Wi-Fi连接速度
mac 不能连接wi-fi Ever since I've been using my new MacBook Air, I've been befuddled by how to do some o ...
- 三星笔记本电脑怎么恢复出厂设置_Mac OS如何恢复出厂设置?安装Mac OS系统教程...
Mac怎么恢复出厂设置?苹果Mac电脑系统一直以稳定安全著称,但有时候Mac OS也会由于某些原因出现运行缓慢.系统崩溃或无法正常启动等的情况,这时候就需要我们重新恢复Mac OS 系统了,今天小编就 ...
最新文章
- POJ2352:Stars——题解
- MyBatis参数传入集合之foreach动态sql
- Navicat安装激活
- EtherCAT 网站链接
- 完整机器学习项目的流程
- 前端学习(2344):打包和部署
- 新泽西州男子因无牌运营比特币交易所或面临5年监禁
- struts2.0+spring intercepter 不能注入属性
- 负载均衡策略_策略路由在多线出口分流和负载均衡中的精妙应用
- python可以做什么工作-Python可以做什么工作?Python有哪些方向?
- LINUX下载并编译javasqlite
- STC学习:红外测试
- Activiti工作流程详解
- 仿9GAG制作过程(四)
- C/C++编写Windows窗口应用程序(Win32程序),非黑漆漆的控制台窗口
- docker网络原理及cgroup
- java实现Runnable接口启动线程
- element-ui的走马灯详解
- TOGAF企业架构的主要内容——上海信息化培训中心
- 小米android系统分享,重温的手机分享 篇一:90hz高刷?45w快充?双扬声器?你不知道的酷安重制版小米9魔改教程...
热门文章
- SMC 如何下载三维及二维图
- 【软件设计师考试】《软件设计师教程》(一)
- ESP-Tuning Tool 使用手册
- 华为数据中心产品汇总介绍
- windows配置端口映射
- DataParallel使用
- 我写的万年历插件(含天干地支,农历,阳历,节气,各种节假日等),基于MooTools 1.4...
- ThinkPad T14 Gen3拆机更换升级内存和固态硬盘
- spssχ2检验_SPSS教程:分层卡方检验(CMH检验)
- Linux系统死亡之ping,linux下防止syn***,端口扫描和死亡之ping