我目前正在使用带有CrtDbg的Visual Studio 2012调试代码,移除或至少定位内存泄漏。
问题是,只要分配号不改变,跟踪分配就很容易。当分配号经常改变(或者不是真正确定的)时,我该如何定位泄漏的分配点?我最起码能不能说出是哪个模块分配了内存?
在应用程序关闭时,我有以下几行代码:
Detected memory leaks!
Dumping objects ->
{2789444} normal block at 0x0000000006103CB0, 32 bytes long.
Data: < q f > B8 71 E4 66 00 00 00 00 00 00 00 00 00 00 00 00
{1269709} normal block at 0x000000000A50C6A0, 1008 bytes long.
Data: < ) > 01 00 00 00 0B 00 00 00 29 00 00 00 CD CD CD CD
...
{2194} normal block at 0x0000000000278060, 16 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Object dump complete.
最后的分配号码2194与静态初始化器有关,可以重现。但其他号码会变化。
我能否使用地址来定位它?或者有更简单的解决方案吗?
谢谢帮助。