相关疑难解决方法(0)

如何使用Application Verifier查找内存泄漏

我想使用标准实用程序在我的应用程序中找到内存泄漏.以前我使用自己的内存分配器,但其他人(是的,你AlienFluid)建议使用微软的应用程序验证程序,但我似乎无法报告我的泄漏.我有以下简单的应用程序:

#include <iostream>
#include <conio.h>

class X
   {
   public:
      X::X() : m_value(123) {}
   private:
      int m_value;
   };

void main()
{
X *p1 = 0;
X *p2 = 0;
X *p3 = 0;

p1 = new X();
p2 = new X();
p3 = new X();
delete p1;
delete p3;
}
Run Code Online (Sandbox Code Playgroud)

此测试显然包含内存泄漏:p2是新的但未删除.

我使用以下命令行构建可执行文件:

cl /c /EHsc /Zi /Od /MDd test.cpp
link /debug test.obj
Run Code Online (Sandbox Code Playgroud)

我下载了Application Verifier(4.0.0665)并启用了所有检查.

如果我现在运行我的测试应用程序,我可以在Application Verifier中看到它的日志,但我没有看到内存泄漏.

问题:

  • 为什么Application Verifier报告没有泄漏?
  • 或者不是Application Verifier真的打算找到漏洞吗?
  • 如果没有哪个其他工具可用于在应用程序结束时清楚地报告泄漏(即不是通过拍摄常规快照并进行比较,因为这在1GB或更多的应用程序中是不可能的),包括调用堆栈的分配地点(因此不是CRT结束时的简单泄漏报告)

如果我找不到合适的实用程序,我仍然需要依靠自己的内存管理器(完美地完成它).

c++ windows memory-leaks application-verifier

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

application-verifier ×1

c++ ×1

memory-leaks ×1

windows ×1