总线错误和段错误相关概念 总线错误 core dumped

总线错误和段错误相关概念 总线错误 core dumped

在UNIX上编程时,经常会遇到如下两个常见的运行时错误:

buserror(总线错误)

segmentationfault(段错误)

总线错误

总线错误几乎都是由于未对齐的读或写造成的。它之所以称为总线错误,是因为出现未对齐的内存访问请求时,被堵塞的组件就是地址总线。对齐的意思就是数据项只能存储在地址是数据项大小的整数倍的内存位置上。在现代的计算机架构中,尤其是RISC架构,都需要数据对齐,因为与任意的对齐有关的额外逻辑会使整个内存系统更大且更慢。通过迫使每个内存访问局限在一个cache行或一个单独的页面内,可以极大地简化如cache控制器或内存管理单元这样的硬件。

我们表达“数据项不能跨越页面或cache边界”规则的方法多少有些间接,因为我们用地址对齐这个术语来陈述这个问题,而不是直截了当说是禁止内存跨页访问,但它们说的是同一回事。例如,访问一个8字节的double数据时,地址只允许是8的整数倍。所以一个double数据可以存储于地址24、8008、32768,但不能存储于地址1006,页和cache的大小是经过精心设计的,这样只要遵守对齐规则就可以保证一个原子数据项不会跨越一个页或cache块的边界。

段错误

段错误通常是由于解除引用一个未初始化或非法值的指针引起的。以发生频率为序,最终可能导致段错误的常见编程错误是:

1、坏指针错误:在指针赋值之前就用它来引用内存;或者向库函数传递一个坏指针(如果调试器显示系统程序中出现了段错误,很可能并不是系统程序引起的段错误,问题可能就出现在自己的代码中);或者指针被释放后还继续访问它的内容。

2、改写错误:越过数组边界写入数据,在动态分配的内存空间以外写入数据,或改写一些堆管理数据结构(在动态分配的内存之前的区域写入数据就很容易发生这种情况)。

3、指针释放引起的错误:释放同一块内存两次,或释放一块未曾使用malloc分类的内存,或释放一个无效的指针。一个极为常见的与释放内存有关的错误就是在for(p=start;p;p=p->next)这样的循环中迭代一个链表,并在循环体内使用free(p)这样的语句。这样,在下一次循环迭代时,程序就会对已经释放的指针进行解除引用操作,从而导致不可预料的结果。

  

爱华网本文地址 » http://www.aihuau.com/a/25101010/27481.html

更多阅读

布林线的基本概念和运用 移动运用概念

一、概念:布林线(BOLL)又称为股价通道线,他表示的是股价围绕着一定的区间运行的轨迹。技术上用来做买点和卖点的判断有一定的参考价值。二、原理:股价的运动总是围绕着某一个价值中枢(均线、成本线等)在一定的范围内波动。(布林线的理解:股

开源软件相关概念三 详解GPL许可 gpl许可

30、 什么是“copyright”?“CopyRight”在英文中是“版权”的意思,相当于我国的“著作权”。指的是作者对其创作的文学、艺术和科学作品依法享有的专有权利,包括发表权,署名权,修改权,保护作品完整权,使用权和获得报酬权等。Copyright是

投资和投机的联系和区别 投机的概念

投资是一种购买财产以获得合理预期收入、股息、利息或租金的方法,它以长期增值的形式获利。区别投资与投机的关键在于投资具有时间和收益的可预测性。投资依据的理论就是稳固基础理论。稳固基础理论认为:每一种投资对象,无论是普通股票

案例 “伪造产地”及相关概念的案例分析 伪造产品产地

“伪造产地”行政处罚案是质量技术监督部门常见的案件类型。笔者在《“伪造产地”与“伪造原产地”的区别》一文里(刊登于《中国质量技术监督》2007年第6期),提出在产品质量执法实务中,“伪造产地”行政处罚案件的调查,除了对生产者、销

“两个生产总值”及相关概念 国内生产总值

1、国内生产总值(GDP)和国民生产总值(GNP)的定义和主要区别2、计算国内生产总值(GDP)有哪几种方法?3、第一、第二、第三产业是怎样划分的?4、社会消费品零售总额5、什么是社会总供给与社会总需求? 6、总产值与总产出有什么区别和联系?7

声明:《总线错误和段错误相关概念 总线错误 core dumped》为网友失去方向分享!如侵犯到您的合法权益请联系我们删除