答えて
これは、Visual Studioランタイムデバッグヒープで使用されるspecial valuesの1つに非常に近いように見えます。 Cランタイムはメモリの割り当てと割り当て解除後に使用される多数の値があり、メモリ破損エラーをより簡単に診断できます。メモリが解放された後に値0xFEEEFEEE
が使用されます。
私は何をあなたのコードで何が起こってすることができることは、オブジェクトが割り当て解除されたことである疑いがあるが、あなたはまだそれへのポインタ(ダングリングポインタ)を持っていて、そのオブジェクトのメンバ変数にアクセスしようとしています。この問題を診断するには、コードの複雑さに応じていくつかのことがあります。 1つはPage Heap Verificationを有効にし、もう1つは参照解除されているクラスのデストラクタにいくつかのブレークポイントを追加して、オブジェクトがどこで破壊されているかを調べることで、参照する他のポインタをリセットできます。ポインターがぶら下がる可能性を減らすために、shared_ptr<>
などのスマートポインターの使用を検討してください。
は、同時に2つのスレッドが同じ場所に書き込んでいるために、違反している読み取り場所にアクセスする可能性がありますか? –
おそらく、ほとんどの場合、1つのスレッドによって行われた変更が失われるため、競合状態に陥ることはあります。私は、ここで重要なことは、アドレス0xFEEExxxxが偽であることです。実際のメモリ位置ではありません。デストラクタがあなたのオブジェクトに呼び出され、メモリが解放され、デバッグヒープが内容を0xFEEEFEEEで置き換えたと思います。それで何とかあなたはそれに関連するオフセットを取得しています。 –
- 1. アクセス違反読み取り場所0xCDCDCDCD
- 2. 未処理例外*****アクセス違反の読み取り場所*******
- 3. glutSwapBuffers "アクセス違反の読み取り場所0x0000000004C0F000"
- 4. エラー "アクセス違反の読み取り場所"
- 5. 0xC0000005:アクセス違反の読み取り場所0x00000000 C++
- 6. CUDA:アクセス違反の読み取り場所
- 7. OpenCV.3.0エラー:0xC0000005:アクセス違反の読み取り場所0x00000000
- 8. C++ + OpenCV =アクセス違反の読み取り場所0x02176000
- 9. アクセス違反の読み取り場所0x012D363C
- 10. C - strtok_s - アクセス違反の読み取り場所
- 11. 0xC0000005:アクセス違反の読み取り場所0x00000000
- 12. アクセス違反の読み取り場所0xc3618000
- 13. 例外エラー:アクセス違反の読み取り場所0xDDDDDDDD
- 14. ChoosePixelFormatアクセス違反の読み取り場所
- 15. アクセス違反読み取り場所Cアレイ
- 16. 「アクセス違反の場所を読み取る0x000000000」エラー
- 17. 0xC0000005:0x0000000000000000の場所を読み取るアクセス違反。 C++
- 18. CのPDCurses(アクセス違反の読み取り場所を表示し続ける)
- 19. imencode()を使用したときのアクセス違反の読み取り場所
- 20. デッキとカードオブジェクトでのC++アクセス違反の読み取り場所0xCCCCCCCC
- 21. アクセス違反の読み取り場所は0x00000014です。ストリームを使用する
- 22. Cリンクされたリスト:アクセス違反の読み取り場所0x00000001
- 23. アクセス違反の読み取り場所0x000000xx - c構造プロパティ - Visual Studio
- 24. アクセス違反の読み取り場所は0x00000000です。 「新しい」キーワード?
- 25. 未処理の例外:0xc0000005で:アクセス違反読み取り場所0x3CC2BE1F
- 26. アセンブリコードの読み取りアクセス違反
- 27. アクセス違反読ん場所*アドレス*
- 28. atigktxx.dll:「アクセス違反読ん場所0xFEEEFEEE」(リリースビルド)
- 29. STLスタック:読み取りアクセス違反
- 30. C++ LinkedList読み取りアクセス違反エラー
コールスタックウィンドウを調べてみましたか? –
あなたの質問の最初の部分で何を求めているのかは本当に不明です。言い換えてみてください。またはこの問題の原因となるサンプルコードを投稿しますか? – JaredPar
エラーは、割り当てられたメモリに対応していない仮想メモリアドレスを読み込んでいるためです。コードを見ることなく、もっと多くのことを言うことは不可能です。おそらく、以前に割り当てを解除されたメモリを読み込もうとしている可能性があります。 –