什么是SEGV_MAPERR?

Gee*_*eek 73 linux posix coredump segmentation-fault

是什么SEGV_MAPERR,它为什么总是想出来SIGSEGV

ahc*_*cox 170

有两种常见的SEGV,这是由无效的内存访问引起的错误:

  1. 访问了具有错误权限的页面.例如,它是只读的,但您的代码试图写入它.这将报告为SEGV_ACCERR.
  2. 访问的页面甚至根本没有映射到应用程序的地址空间.这通常是由于取消引用空指针或使用小整数值损坏的指针而导致的.这被报告为SEGV_MAPERR.

有关SEGV_MAPERR的排序(索引的Linux源代码)的文档,请访问:http://lxr.free-electrons.com/ident?i = SEGV_MAPERR .

  • 当这个更完整,更有帮助时,为什么http://stackoverflow.com/a/1000010/358475被标记为答案? (8认同)
  • "SEGV_MAPERR"的一个例子是堆栈溢出(没有双关语意图).:d (4认同)
  • 问题和其他答案比我的答案要早得多.我确实编辑了另一个答案来改善它. (2认同)
  • 还有更多 SEGV 类型:http://elixir.free-electrons.com/linux/latest/source/include/uapi/asm-generic/siginfo.h#L223 (2认同)

Sev*_*Sev 38

这是一个分段错误.最有可能是悬空指针问题,或某种缓冲区溢出.

SIGSSEGV 是基于问题,分段错误终止它的信号.

检查悬空指针以及溢出问题.

启用核心转储将帮助您确定问题.