一、 什么是“Segmentation fault in Linux”

所谓的段错误就是指访问的内存超过了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的gdt表,后13位保存相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的在cpu中的运行级别,指向的gdt是由以64位为一个单位的表,在这张表中就保存着程序运行的代码段以及数据段的起始地址以及相应的断限和页面交换还有程序运行级别和内存粒度等信息,一旦一个程序发生了越界访问,CPU就会产生相应的异常保护,于是segmentation fault就出现了。

即“当程序试图访问不被允许访问的内存区域(比如,尝试写一块属于操作系统的内存),或以错误的类型访问内存区域(比如,尝试写一块只读内存)。这个描述是准确的。为了加深理解,我们再更加详细的概括一下SIGSEGV。段错误应该就是访问了不可访问的内存,这个内存要么是不存在的,要么是受系统保护的

Ø SIGSEGV是在访问内存时发生的错误,它属于内存管理的范畴

Ø SIGSEGV是一个用户态的概念,是操作系统在用户态程序错误访问内存时所做出的处理。

Ø 当用户态程序访问(访问表示读、写或执行)不允许访问的内存时,产生SIGSEGV。

Ø 当用户态程序以错误的方式访问允许访问的内存时,产生SIGSEGV。

用户态程序地址空间,特指程序可以访问的地址空间范围。如果广义的说,一个进程的地址空间应该包括内核空间

Segmentation Fault错误原因总结相关推荐

  1. ubuntu Segmentation Fault错误原因

    一. 什么是"Segmentation fault in Linux" 所谓的段错误就是指访问的内存超过了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他是一个48位 ...

  2. Segmentation Fault 错误原因总结及解决方法

  3. Linux内存显示错误,使用mmap读取内存的内容,出现“Segmentation fault”错误,请

    使用mmap读取内存的内容,出现"Segmentation fault"错误,请帮看看原因. 这个程序的目的是用于功能调试的,正在读取一块网卡使用的dma内存空间,想看看里面的数据 ...

  4. 用GDB调试Segmentation Fault错误

    调试Linux程序的时候,出现Segmentation Fault是最郁闷的事情了,程序代码量很大的时候,可能花很多时间都找不到出错原因.        这里介绍一种对你调试Segmentation ...

  5. onvif规范的实现:onvif开发常用调试方法 和常见的segmentation fault错误

    在前几篇中,虽然已经实现了rtsp视频流的对接,但是还要做的工作还非常多,onvif本来就是一个覆盖面非常广的一个协议,每一个功能都要填充大量的函数.而且稍不注意就会出现segmentation fa ...

  6. 由char* 引发的Segmentation fault错误

    在学习形参带const限定符时,意外遇到Segmentation fault的bug问题.C程序是在linux环境下运行. 在维基百科上是这样解释Segmentation fault,存储器区段错误( ...

  7. linux中非法内存,Linux下数组非法访问导致内存破坏 —— 引发segmentation fault的原因...

    2012-02-05 wcdj 1, 调试时必需的栈知识 2, 数组非法访问导致内存破坏 调试时必需的栈知识 栈(stack)是程序存放数据的内存区域之一,其特征是LIFO(Last In First ...

  8. segmentation fault 常见原因

    造成segmentation fault的可能原因分析 一 造成segment fault,产生core dump的可能原因 1.内存访问越界 a) 由于使用错误的下标,导致数组访问越界 b) 搜索字 ...

  9. centos使用yum时提示Segmentation fault错误的深入研究

    头一次用CentOS,结果就遇到了在用yum时出现了centos使用yum时提示Segmentation fault,这个错误的解决方法网上不少,但是我测试了一下发现不是那么回事,最后几经研究终于搞定 ...

  10. DRV8711总是报Pre-driver fault错误原因与处理方法

    一.DRV8711 Pre-driver fault检测原理 DRV8711的内部有一个模拟比较器,当驱动外部FET进行开关时会把Vgs电压与1V进行比较,从而判断Pre-driver fault与否 ...

最新文章

  1. EffectiveC++ Item11
  2. c语言约束函数,求解能不能用c或c++语言实现下面的约束条件
  3. 什么是好的API设计?
  4. 《C#高级编程》 读书心得1--核心C# 几点你可能没注意,但很基础的小东西。
  5. 计算机组成原理中lad什么意思,计算机组成原理的大神们能不能帮忙做几道题啊...
  6. [云炬商业计划书阅读分享] 珠江啤酒公司企业文化调查
  7. 《算法导论》读书笔记之第1章 算法在计算机中的作用
  8. 2018 年“浪潮杯”山东省 ACM 省赛总结
  9. cmos图像传感器应用实例及其发展趋势分析
  10. CICD和K8S实战
  11. Log42j 源代码分析:日志回滚
  12. 责任链模式 php,每天一个设计模式之(9)-----责任链模式
  13. Java复制文件的4种方式
  14. Java修改图片格式
  15. app打开QQ与陌生人聊天
  16. 部署CentOS可视化界面GUI-之腾讯云服务器
  17. 利用T0定时器定时 100ms,每当定时时间到就使 P1.7 求反
  18. Axure的强大逻辑交互
  19. Spring(2)自动装配
  20. 计量广义差分操作过程_计量经济学总结

热门文章

  1. [CyanogenMOD移植教程] 前言:什么是CyanogenMod
  2. android 闪屏动态界面,Android 实现闪屏
  3. spyder怎么执行html文件,spyder添加快捷键
  4. Detecting Causality in Complex Ecosystems(检测复杂生态系统中的因果关系)
  5. 创建AWS个人账户享用一年免费套餐
  6. 1116: 删除元素(函数)C语言
  7. Android:自定义View实现绚丽的圆形进度条
  8. 【processing】追
  9. H3C防火墙基础配置1-登录配置、安全域配置
  10. flutter 中Sliver一些想法