У меня были проблемы с отслеживанием нарушения прав доступа в моей программе. Это происходит, когда деструктор вызывается в третий раз, именно тогда, когда кажется, что деструктор завершает работу.
Я потратил несколько часов, пытаясь отследить это, поэтому я ищу дополнительные советы о том, что я могу сделать. Я создаю экземпляр класса с операторами 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.