应用程序崩溃后,windbg中的堆栈跟踪如下:
ntdll+0x11766
msvcrt!free+0x1ae
msvcrt!free+0x1cc
msvcrt!malloc+0x27
mfc42!Ordinal823+0x2f请让我知道这是什么意思,为什么免费被调用两次?
发布于 2011-12-14 19:44:20
当崩溃发生在malloc或free中时,最有可能的原因是堆损坏。损坏的原因可能发生在与当前堆栈无关的代码中。要验证堆是否已损坏,请使用
!heap –s –v为此,您将需要符号,请提前使用
.symfix你可能根本没有空闲,由于缺少符号,堆栈显示的偏移量是最近的出口,因此大偏移量(free+0x1cc )检查堆栈后的.symfix和享受!
要找到内存损坏的根本原因,可以使用不同的方法,但如果可能,全页堆是一个很好的方法。
https://stackoverflow.com/questions/8502303
复制相似问题