2011-12-14 27 views
0

堆棧跟蹤在WinDbg中後應用程序崩潰崩潰點如下:VC++ 6.0 - WinDbg的堆棧跟蹤顯示在malloc的

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

請讓我知道這是什麼有序手段,爲什麼免費調用兩次?

+2

請顯示一些代碼或沒有人可以幫忙。 – ksming 2011-12-14 09:43:39

回答

1

當崩潰在malloc或free中時,原因很可能是堆損壞。 腐敗的原因可能發生在與當前堆棧無關的代碼中。 要驗證是否堆損壞,使用

!heap –s –v 

您需要的符號對於這一點,提前使用

.symfix 

你可能不自由可言,由於缺乏符號棧顯示爲 ,偏移量爲最接近的出口,因此偏移量很大(免費+ 0x1cc) 檢查.symfix之後的堆棧並享受!

要找出內存損壞的根本原因,可以使用不同的方法,但是如果可能的話,整頁堆是一個很好的方法。