Linux上的分段错误是什么?

Rus*_*sel 31 segmentation-fault

在Linux中:

什么是分段错误?我知道它会崩溃程序,但这是某种内存泄漏问题,还是完全不相关的东西?另外,你如何处理这些?这通常是计算机设置或应用程序本身的问题吗?

此外,这是否也发生在其他操作系统中?

Bor*_*lid 27

分段错误是指程序尝试访问未由操作系统分配的内存,或者不允许访问的内存.

"分段"是计算机上每个进程的概念,具有自己独特的虚拟地址空间.因此,当进程A读取内存位置0x877时,它会读取驻留在RAM中不同物理位置的信息,而不是进程B读取自己的0x877时的信息.

所有现代操作系统都支持和使用分段,因此所有操作系统都会产生分段错误.

要处理分段错误,请修复导致它的代码.它通常表示编程不佳,尤其是边界条件错误,错误的指针操作或关于共享库的无效假设.有时,像任何问题一样,段错误可能是由错误的硬件引起的,但通常情况并非如此.

  • 分段错误与虚拟地址空间无关。 (2认同)

Joh*_*don 6

'segfault'是指程序访问受保护或无效的内存; 通常是由于糟糕的内存管理或错误的指针操作.

操作系统检测到无效的内存访问并使应用程序崩溃.