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 _все ()Строка 214 + 0x5 байт C++

Насколько я могу судить по этой информации, причиной проблемы является какая-то строковая переменная? У кого-нибудь есть какие-либо советы по интерпретации этой информации?

Любые другие советы также будут полезны, заранее спасибо.

Пишу под Windows 7 и использую Visual Studio 2010 Professional.

7
задан Interminable 8 May 2012 в 03:43
поделиться