有人知道应用程序验证器的工作原理吗?
我目前正在开发一个大量使用递归的树解析应用程序。该程序似乎按预期工作,但我确实在一些地方使用了“new”,所以我想到使用 Application Verifier 检查内存泄漏。 AV 没有报告任何错误,但是,在几分钟内,应用程序的图像迅速增长到大约 1 GB,而没有它只能达到大约 60 兆字节。 我似乎找不到任何内存泄漏,并且看到正在进行多少递归,我开始怀疑 AV 出于测试目的在堆栈上放置了额外的项目,并且随着递归的深入,额外的“垃圾”堆积起来并使程序崩溃。
有没有人对此事有任何见解?
最佳答案
这可能取决于您启用了哪些 AppVerifier 功能。有一个堆检查功能,将每个分配放在自己的页面中,并在分配之间分配保护页面。如果您要分配大量小对象,此功能将显着增加内存使用量。这是此类测试的正常行为,无需担心。
手边,我不知道有什么功能会影响堆栈的使用。我相信如果不使用检测重新编译代码就很难弄乱堆栈,而 AppVerifier 不需要使用检测进行编译。
关于windows - MS Application Verifier 膨胀堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11745311/