我有一个在VC 2008(C ++)中开发的应用程序,它使用了使用openssl dll的轴dll。链中的某个人会破坏堆 - 这种情况最终会导致我的应用程序出现“内存访问冲突”,违规行为不应该/不可能发生。因此,链轴ssl中的某个人会腐败一些东西,但我找不到谁或者什么。
我尝试使用DevPartner的工具进行内存泄漏,但它没有发现泄漏 - 没有任何泄漏。
我该如何处理这个问题?我多次查看了轴和ssl文档,并实现并检查了所有可能的内存管理问题和修复,但无济于事。
非常感谢! 马林
答案 0 :(得分:3)
尝试使用MS application verifier。它与Visual Studio集成,因此您可以直接从它运行“验证”。
答案 1 :(得分:3)
为什么你认为泄密可能以某种方式造成腐败?你需要注意越界访问,死指针访问,非法转换和类似的事情,而不是泄漏。这是一个棘手的事情。 Valgrind是追逐这类问题的绝佳工具,但遗憾的是它不适用于Win32。如果您的代码是可移植的,您可以尝试在Linux上进行调试,否则您需要使用像Purify这样的商业工具,或者使用日志和断言,以及调试器。 / p>
答案 2 :(得分:2)
如果您获得了库的调试版本,MSVC提供了一个免费的调试malloc,以及一个调试new和delete。这些包含覆盖检测等内容。
答案 3 :(得分:1)
可能是这篇MSDN文章可能有您正在寻找的答案: Finding a Memory Leak
您也可以尝试使用此LeakDiag工具。不确定为什么在MSDN中没有引用它?!?!?但Codeproject.com
中有一篇很好的文章