C++关于跟踪访问冲突的任何建议?

Int*_*ble 7 c++ destructor class instance access-violation

我一直在尝试在我的程序中追踪访问冲突时遇到问题.它是在第三次调用析构函数时发生的,恰好是析构函数完成时.

我花了好几个小时试图追踪这一点,所以我正在寻找有关我能做的事情的进一步建议.我正在用newdelete运算符创建类实例.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.

cra*_*gmj 4

在使用BoundsChecker(现在属于 Borland DevPartner)之前,我已经成功地跟踪了内存错误。有许多类似的产品也可能有帮助:HeapAgentRational Purify。这些看起来很像 ValGrind,但可以在 Windows 上运行。

以下是 3 个可能有帮助的开源替代方案:

  1. DUMA(从外观上看,您必须自己为 Windows 构建它,但自述文件包含一些关于这样做的注释)

  2. XMEM

  3. 大象

我不知道它们的性能如何,但它们听起来很有前途,而且看起来它们都以某种方式在 Windows 上运行。

有关管理内存错误的 Microsoft 页面也可能会有所帮助,并且还包含设置内存断点的链接,这可能会帮助您了解数据首次被删除或更改的时间。祝你好运!