WinDbg是否能够检测由于无效向下转换导致的内存堆损坏?

Gui*_*e07 5 c++ windbg

这是我刚发现的一个错误!万岁.该错误是由于不正确的向下转换,实际上我使用的是static_cast而不是dynamic_cast.

我的应用程序非常庞大且多线程,并与其他应用程序交互.因此调试非常困难.我试图使用WinDbg,GFlagsApplication Verifier而没有结果.当然因为我不知道如何使用这些工具.

是否有可能通过使用WinDbg等工具找到因无效向下转换导致的内存堆损坏?如果有,怎么样?

Kje*_*nar 11

Windbg!heap -s -v命令可以显示损坏的堆

0:008> !heap -s -v

  Heap     Flags   Reserv  Commit  Virt   Free  List   UCR  Virt  Lock  Fast 
                (k)     (k)    (k)     (k) length      blocks cont. heap 
-----------------------------------------------------------------------------
.ERROR: Block 001842e8 previous size 0 does not match previous block size 4
HEAP 00140000 (Seg 00140640) At 001842e8 Error: invalid block Previous
Run Code Online (Sandbox Code Playgroud)