0

そのため、マルチスレッド C++ プログラムを作成していますが、次のエラーが返されます。

HANAsimulationSync.exe の 0x77e915de で未処理の例外: 0xC0000005: アクセス違反の読み取り場所 0x00000020。

ところで、このコードをシングル スレッドで実行すると、エラーは返されません。これはどのようなエラーなのか知りたいのですが?メモリ管理と関係がありますか?

4

1 に答える 1

14

これは、無効なメモリ位置から読み込もうとしたことを意味します。この場合、場所は0x00000020. これはゼロより上のわずかなオフセットであるため、おそらくヌル ポインターからオフセットを逆参照しているようです。

したがって、このようなものを確認する一般的な方法は、offset にメンバーを持つ構造体がある場合です0x20。そして、ポインタがnullである構造体へのポインタからそのメンバーを読み取ろうとした場合。また、null ポインターを使用して配列にインデックスを付けると、同じエラーが発生します。私はあなたが今考えを得ると思います。

その他の関連情報は、障害の原因となったコード アドレスです。あなたの例では、それは0x77e915de. 完全なイメージ マップを生成するようにリンカーを構成すると、どのコード行がエラーを引き起こしたかを特定できます。さらに良いことに、デバッグ情報を生成する場合は、デバッガーをアタッチできます。

一般的に、この種のエラーはセグメンテーション違反、アクセス違反、または保護違反として知られています。これらの用語はすべて同じことを意味します。

于 2013-03-25T13:18:11.663 に答える