什么是SEGV_MAPERR
,为什么总是想出来SIGSEGV
?
问问题
87211 次
2 回答
214
有两种常见的SEGV类型,这是由无效内存访问导致的错误:
- 访问了具有错误权限的页面。例如,它是只读的,但您的代码试图写入它。这将报告为
SEGV_ACCERR
。 - 访问的页面甚至根本没有映射到应用程序的地址空间。这通常是由于取消引用空指针或被小整数值损坏的指针造成的。这被报告为
SEGV_MAPERR
。
某种文档(索引 Linux 源代码)在SEGV_MAPERR
这里: http://lxr.free-electrons.com/ident?i= SEGV_MAPERR。
于 2015-01-23T18:36:18.230 回答
40
这是一个分段错误。很可能是悬空指针问题,或某种缓冲区溢出。
SIGSSEGV
是根据问题(分段错误)终止它的信号。
检查悬空指针以及溢出问题。
启用核心转储将帮助您确定问题。
于 2009-06-16T07:33:12.713 回答