Int*_*ble 7 c++ destructor class instance access-violation
我一直在尝试在我的程序中追踪访问冲突时遇到问题.它是在第三次调用析构函数时发生的,恰好是析构函数完成时.
我花了好几个小时试图追踪这一点,所以我正在寻找有关我能做的事情的进一步建议.我正在用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++
Run Code Online (Sandbox Code Playgroud)
msvcp100d.dll!std :: _ Container_base12 :: _ Orphan_all()第214行+ 0x5字节C++
我对这些信息的最佳猜测是,有某种字符串变量引起了这个问题?有没有人对解释这些信息有任何建议?
任何其他建议也会有用,提前谢谢.
我在Windows 7下编码并使用Visual Studio 2010 Professional.
在使用BoundsChecker(现在属于 Borland DevPartner)之前,我已经成功地跟踪了内存错误。有许多类似的产品也可能有帮助:HeapAgent和Rational Purify。这些看起来很像 ValGrind,但可以在 Windows 上运行。
以下是 3 个可能有帮助的开源替代方案:
我不知道它们的性能如何,但它们听起来很有前途,而且看起来它们都以某种方式在 Windows 上运行。
有关管理内存错误的 Microsoft 页面也可能会有所帮助,并且还包含设置内存断点的链接,这可能会帮助您了解数据首次被删除或更改的时间。祝你好运!