そのため、マルチスレッド C++ プログラムを作成していますが、次のエラーが返されます。
HANAsimulationSync.exe の 0x77e915de で未処理の例外: 0xC0000005: アクセス違反の読み取り場所 0x00000020。
ところで、このコードをシングル スレッドで実行すると、エラーは返されません。これはどのようなエラーなのか知りたいのですが?メモリ管理と関係がありますか?
そのため、マルチスレッド C++ プログラムを作成していますが、次のエラーが返されます。
HANAsimulationSync.exe の 0x77e915de で未処理の例外: 0xC0000005: アクセス違反の読み取り場所 0x00000020。
ところで、このコードをシングル スレッドで実行すると、エラーは返されません。これはどのようなエラーなのか知りたいのですが?メモリ管理と関係がありますか?
これは、無効なメモリ位置から読み込もうとしたことを意味します。この場合、場所は0x00000020
. これはゼロより上のわずかなオフセットであるため、おそらくヌル ポインターからオフセットを逆参照しているようです。
したがって、このようなものを確認する一般的な方法は、offset にメンバーを持つ構造体がある場合です0x20
。そして、ポインタがnullである構造体へのポインタからそのメンバーを読み取ろうとした場合。また、null ポインターを使用して配列にインデックスを付けると、同じエラーが発生します。私はあなたが今考えを得ると思います。
その他の関連情報は、障害の原因となったコード アドレスです。あなたの例では、それは0x77e915de
. 完全なイメージ マップを生成するようにリンカーを構成すると、どのコード行がエラーを引き起こしたかを特定できます。さらに良いことに、デバッグ情報を生成する場合は、デバッガーをアタッチできます。
一般的に、この種のエラーはセグメンテーション違反、アクセス違反、または保護違反として知られています。これらの用語はすべて同じことを意味します。