segmentation fault

翻译 2013年12月03日 10:24:59


Segmentation fault
段错误
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

A segmentation fault occurs when a program attempts to access a memory location that it is not allowed to access, or attempts to access a memory location in a way that is not allowed (for example, attempting to write to a read-only location, or to overwrite part of the operating system).
当程序试图访问不允许被访问的内存位置,或试图以未授权的方式访问内存位置时(例如,试图写只读内存位置,或试图修改操作系统部分),就会发生段错误。


Common causes
常见的原因
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

The following are some typical causes of a segmentation fault:
造成段错误的几种典型的原因:

Attempting to execute a program that does not compile correctly. Some compilers will output an executable file despite the presence of compile-time errors
试图执行未正确编译的程序。某些编译器会不顾编译时错误继续暑促可执行文件。

Dereferencing NULL pointers
解引用空指针

Attempting to access memory the program does not have rights to (such as kernel structures in process context)
试图访问程序无权访问的内存

Attempting to access a nonexistent memory address (outside process's address space)
试图访问不存在的内存地址

Attempting to write read-only memory (such as code segment)
试图写只读内存

A buffer overflow
缓冲区溢出

Using uninitialized pointers
使用未初始化的指针

Generally, segmentation faults occur because a pointer is NULL, or because it points to random memory (probably never initialized to anything), or because it points to memory that has been freed/deallocated/"deleted".
通常,段错误的原因为指针为空,或指向随机内存,或因为指向已释放已被解除分配、或已被删除的内存


pasted from wikipedia


相关文章推荐

Segmentation_fault_in_linux.pdf

  • 2012年04月28日 16:38
  • 309KB
  • 下载

segmentation fault in linux

  • 2009年12月21日 22:21
  • 309KB
  • 下载

你的C/C++程序为什么无法运行?揭秘Segmentation fault (1)

什么让你对C/C++如此恐惧?晦涩的语法?还是优秀IDE的欠缺? 我想那都不是问题,最多的可能是一个类似这样的错误: 段错误(Segmentation fault)这是新手无法避免的错误,也是老手...

c/c++ g++默认编译调用成功,O2优化却发生Segmentation fault

一、背景: 正常默认编译下,调用成功,没有发生任何错误,调用成功。 但O2优化条件下,却发生了Segmentation fault错误。 这一般表明代码存在内存错误访问的情况。 二、检测代码发...

函数栈溢出引起的段错误segmentation fault

上个月遇到了一个奇怪的问题: 有一个回调函数中发生了段错误,但经检查也没有什么明显的错误,然后用排除法一点一点屏蔽,最后定位在一个函数里出错,但这个函数没什么明显错误。最后把入口参数改为引用传递就不报...
  • xxm524
  • xxm524
  • 2014年04月13日 14:36
  • 2148

linux下segmentation fault(段错误)总结

Segment fault之所以能够流行于世,是与Glibc库中基本所有的函数都默认型参指针为非空有着密切关系的。     相信很多在linux做过开发的、学习linux编程的人都遇到过这个段错误,...

总结段错误(Segmentation fault)

1)往受到系统保护的内存地址写数据 有些内存是内核占用的或者是其他程序正在使用,为了保证系统正常工作,所以会受到系统的保护,而不能任意访问. 1 #include 2...
  • undead
  • undead
  • 2011年05月26日 13:38
  • 318

移植QT4.5 Segmentation Fault报错解决方法和字体偏小的办法

移植QT4.5 Segmentation Fault报错解决方法和字体偏小的办法我想大多数人都跟我一样直接用友善提供的arm-linu-gcc 4.3.2的版本来编译QT程序,所以遇到这个错误是必然的...

Program terminated with signal 11, Segmentation fault.

今天写程序遇到一个问题:Program terminated with signal 11, Segmentation fault. gdb 调试现象如下: warning: no loada...

Segmentation Fault in Linux(3.如何避免SIGSEGV)

http://www.cnblogs.com/kaixin/archive/2010/06/07/1753135.html 3.如何避免SIGSEGV 良好的编程习惯永远是最好的预防方...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:segmentation fault
举报原因:
原因补充:

(最多只允许输入30个字)