2

マルチスレッド環境でプログラムを実行していますが、ある時点で失敗します。次のエラーが表示されるよりも、gdbで試してみました。

プログラムがシグナル SIGSEGV を受信しました。セグメンテーション違反です。

[スレッド 0x7fff677b700 (LWP 2777) に切り替えます] c/mgmt.c:479 479 c/mgmt.c の process_incomplete_rows (resultset=0x507950) の 0x00007ffff7aa42b9: そのようなファイルまたはディレクトリはありません。

mgmt.c ファイルがあり、このコードは一部のオプションでは正常に機能しますが、2 つまたは 3 つのオプションでこのエラーが発生します。このエラーの原因は何ですか。コンパイルまたはcoeのエラーですか?または一部のデータへのアクセス中にエラーが発生しましたか?

4

2 に答える 2

5

セグメンテーション違反は、通常、無効なポインターの参照が原因で発生する実行時エラーです。通常、その無効なポインターは初期化されていませんが、古いポインターを再利用したり、割り当てられたメモリ チャンクの末尾 (文字列の末尾など) を超えて書き込みを行ったりすることがあります。

于 2013-06-07T06:53:03.127 に答える