C++ 分析堆损坏转储

C++ 分析堆损坏转储,c++,dll,visual-c++,crt,C++,Dll,Visual C++,Crt,有时,一个进程将使用不同版本的crt库,这将导致堆损坏 错误地使用分配的memeory也会导致堆损坏,但很难跟踪。调试此类问题的最佳建议是什么?在大多数情况下,我只能分析小型转储 非常感谢!@HansPassant:对不起,我弄错了,两个msvcr80.dll的版本不一样,我找到了原因。所以我只想问另一个问题。不,小型转储对调试堆损坏没有用处。充其量,你只能看到它被破坏,你不能说出是什么代码产生了它。这段代码很久以前就运行过了。您需要在发生损坏时捕获它。数据断点是一种很好的方法。允许您注入堆检查

有时,一个进程将使用不同版本的crt库,这将导致堆损坏

错误地使用分配的memeory也会导致堆损坏,但很难跟踪。调试此类问题的最佳建议是什么?在大多数情况下,我只能分析小型转储


非常感谢!

@HansPassant:对不起,我弄错了,两个msvcr80.dll的版本不一样,我找到了原因。所以我只想问另一个问题。不,小型转储对调试堆损坏没有用处。充其量,你只能看到它被破坏,你不能说出是什么代码产生了它。这段代码很久以前就运行过了。您需要在发生损坏时捕获它。数据断点是一种很好的方法。允许您注入堆检查的调试分配器(如
)有助于缩小发生堆检查的代码区域。如果你事先知道你已经加载了多个CRT,那么这本身就是一个非常好的潜在客户。Vista提供的调试堆非常有用。