检测内存泄漏(使用VS自带的诊断工具)

一、实验代码

 1 #include <iostream>
 2 #include <windows.h>
 3 
 4 int main()
 5 {
 6     while (true) 
 7     {
 8         int* arr = new int[1024];
 9         std::cout << arr << std::endl;
10         Sleep(1000);
11     }
12 }

可以看出第8行申请了内存,后面没释放,造成内存泄漏。

二、使用 VS 诊断工具

  (1)代码跑起来,打开诊断工具(CTRL+ALT+F2),如下  

    

 

 

 

  (2) 点击堆分析,然后点击截取快照,

    

 

    

 

 

   可以看出第8秒左右,while里在堆上开辟了9次内存,每次开辟4096个字节,占总的内存36864个字节,然后双击分配调用堆栈,查看内存泄漏的代码位置。

    

 

 

   (3)再次点击截取快照 

    

    

 

 

     可以看出相比较第一次快照,第585秒左右时,对象增加了577,内存增加了2363392字节。

 

posted @ 2021-08-04 09:35  zwj鹿港小镇  阅读(2422)  评论(0编辑  收藏  举报