繁体   English   中英

VC ++ 6.0-WinDbg堆栈跟踪显示了malloc的崩溃点

[英]VC++ 6.0 - WinDbg stack trace shows a crash point at malloc

应用程序崩溃后,windbg中的堆栈跟踪如下:

ntdll+0x11766
msvcrt!free+0x1ae
msvcrt!free+0x1cc
msvcrt!malloc+0x27
mfc42!Ordinal823+0x2f

请让我知道这是什么序数方式,为什么免费两次被调用?

当崩溃发生在malloc或free内部时,原因很可能是堆损坏。 损坏的原因可能发生在与当前堆栈无关的代码中。 要验证堆是否已损坏,请使用

!heap –s –v

为此,您需要预先使用符号

.symfix

由于缺少符号,您可能根本没空,堆栈显示时偏移到最近的出口,因此偏移量很大(free + 0x1cc)在.symfix之后检查堆栈,然后享受!

为了找到导致内存损坏的根本原因,可以使用不同的方法,但是如果可能的话,使用整页堆是一种很好的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM