197 SEGVには2つの一般的な種類があります。これは、無効なメモリアクセスに起因するエラーです。 間違った権限を持つページにアクセスしました。たとえば、読み取り専用でしたが、コードが書き込もうとしました。これはSEGV_ACCERRとして報告されます。 アプリケーションのアドレス空間にまったくマップされていないページにアクセスしました。これは多くの場合、nullポインター、または小さな整数値で破損したポインターを逆参照した結果として発生します。これはSEGV_MAPERRとして報告されます。 SEGV_MAPERRのソート(インデックス付きLinuxソースコード)のドキュメントは次のとおりです:http://lxr.free-electrons.com/ident?i = SEGV_MAPERR 。 — ahcox ソース 8 これがより完全で役立つのに、なぜstackoverflow.com/a/1000010/358475が答えとしてマークされているのですか? — OldPeculier 2015 2 質問と他の答えは私の答えよりずっと古いです。私は少なくともそれを改善するために他の答えを編集しました。 — ahcox 2015 これらをEXC_BAD_ACCESS例外タイプと区別する状況を知ることは興味深いでしょう。たとえば、ページはマップされていますが、割り当てられていません(/最近割り当てが解除されています)? — Bobjt 2016年 5 一例SEGV_MAPERRはスタックオーバーフローです(しゃれは意図されていません)。:D — Antti Haapala 2016 2 さらにSEGV種類があります。elixir.free-electrons.com/linux/latest/source/include/uapi/... — トマシュ
40 セグメンテーション違反です。おそらく、ダングリングポインタの問題、またはある種のバッファオーバーフローです。 SIGSSEGV 問題、セグメンテーション違反に基づいてそれを終了する信号です。 ダングリングポインタとオーバーフローの問題を確認してください。 コアダンプを有効にすると、問題を特定するのに役立ちます。 — Sev ソース