什么是SEGV_MAPERR?

问题描述 投票:65回答:2

什么是SEGV_MAPERR,为什么它总是拿出SIGSEGV

linux posix sigsegv coredump
2个回答
157
投票

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

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

SEGV_MAPERR的排序(索引的Linux源代码)文档在这里:http://lxr.free-electrons.com/ident?i=SEGV_MAPERR


38
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.