プログラムでアクセス違反を追跡する際に問題が発生しました。デストラクタが3回目に呼び出されたときに発生します。デストラクタが終了するように見えるときです。C++アクセス違反を追跡するためのアドバイスはありますか?
私はこれを追跡しようと数時間を費やしてきたので、できることについてさらにアドバイスを求めています。 new
とdelete
の演算子でクラスインスタンスを作成しています。 Visual Studioの出力ウィンドウが表示さ:
First-chance exception at 0x60e3ad84 (msvcp100d.dll) in WebCollationAgent.exe: 0xC0000005: Access violation writing location 0xabababab. Unhandled exception at 0x60e3ad84 (msvcp100d.dll) in WebCollationAgent.exe: 0xC0000005: Access violation writing location 0xabababab.
は私がしようとすると、それらのメモリ位置にあったかを調べるために何かできることはありますか? !
Program.exe!Network::`scalar deleting destructor'() + 0x2b bytes C++
Program.exe!std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >() Line 754 + 0xf bytes C++
Program.exe!std::_String_val<wchar_t,std::allocator<wchar_t> >::~_String_val<wchar_t,std::allocator<wchar_t> >() Line 478 + 0xb bytes C++
msvcp100d.dllのstd :: _ Container_base12 :::
コールスタックウィンドウには、次の(私は、年代順にして最古の最新それを貼り付けてきたように逆の順序で)を示し、 _Orphan_all()行214 + 0x5バイトC++
この情報には、問題の原因となる文字列変数があります。誰もこの情報を解釈する助言をしていますか?
その他のアドバイスもありがとうございます。
私はWindows 7でVisual Studio 2010 Professionalを使用してコーディングしています。
[valgrind](http://valgrind.org/) – dasblinkenlight
0xABABABABは、ガードバイトとしてHeapAllocによって使用されます。どこかでメモリが壊れている可能性があります。 http://asawicki.info/news_1292_magic_numbers_in_visual_c.html –
@dasblinkenlight Valgrindほど涼しく、Windowsをサポートしていません。 – cgmb