2

有谁知道应用程序验证器是如何工作的?

我目前正在开发一个大量使用递归的树解析应用程序。该程序似乎按预期工作,但是我确实在一些地方使用了“new”,所以我想用 Application Verifier 检查内存泄漏。AV 不会报告任何错误,但是,在几分钟内,应用程序的映像会迅速增长到大约 1 GB,而没有它只会达到 60 兆左右。我似乎找不到任何内存泄漏,并且看到正在进行多少递归,我开始怀疑 AV 在堆栈上放置了额外的项目以用于测试目的,并且随着递归的深入,额外的“垃圾”会堆积起来并使程序崩溃。

有没有人对此事有任何见解?

4

1 回答 1

1

这可能取决于您打开了哪些 AppVerifier 功能。有一个堆检查功能,可以将每个分配放在自己的页面中,并在分配之间分配保护页面。如果您要分配大量小对象,此功能将显着增加内存使用量。这是此类测试的正常行为,无需担心。

顺便说一下,我不知道影响堆栈使用的任何功能。我相信如果不使用仪器重新编译代码,就很难弄乱堆栈,并且 AppVerifier 不需要使用仪器进行编译。

于 2012-07-31T18:22:51.980 回答