197 SEGV有两种常见的类型,这是由于无效的内存访问导致的错误: 访问了具有错误权限的页面。例如,它是只读的,但是您的代码尝试将其写入。这将报告为SEGV_ACCERR。 访问的页面甚至根本没有映射到应用程序的地址空间。这通常是由于取消引用空指针或使用小整数值损坏的指针引起的。报告为SEGV_MAPERR。 SEGV_MAPERR的某种文档(带索引的Linux源代码)在这里:http ://lxr.free-electrons.com/ident?i=SEGV_MAPERR 。 — 阿科克斯 source 8 为什么当这个更加完整和有用的时候,stackoverflow.com / a / 1000010/358475被标记为答案? — OldPeculier 2015年 2 这个问题和其他答案比我的答案要古老得多。我确实编辑了另一个答案以至少改善它。 — ahcox 了解将这些环境与EXC_BAD_ACCESS异常类型区分开的情况将很有趣。例如,页面是否已映射但未分配(/最近已释放)? — Bobjt 5 SEGV_MAPERR堆栈溢出(无双关语)是一个例子。:D — Antti Haapala 2 SEGV类型甚至更多:elixir.free-electrons.com/linux/latest/source/include/uapi/…– — tomasz
40 这是细分错误。最有可能是悬空的指针问题,或某种缓冲区溢出。 SIGSSEGV 是根据问题(细分错误)终止它的信号。 检查是否有悬空的指针以及溢出问题。 启用核心转储将帮助您确定问题。 — 塞夫 source