2

Visual Studio 中是否有任何东西会报告像 Codeguard 这样的内存泄漏?

例如:

Error 00001. 0x300010 (Thread 0x0FA4):
Resource leak: The object (0xC65D84) was never deleted

The object (0x00C65D84) [size: 4 bytes] was created with new
| element2.cpp line 3:
| #include "element2.h"
| 
|>CS225::Element2::Element2(int _val) : p_val(new int(_val)) { }
| 
| CS225::Element2::Element2(const Element2& rhs) 
Call Tree:
   0x0040E3A7(=bcc_cg.exe:0x01:00D3A7) element2.cpp#3
   0x00409116(=bcc_cg.exe:0x01:008116) element-factory.h#19
   0x0040D964(=bcc_cg.exe:0x01:00C964) array.cpp#87
   0x00405308(=bcc_cg.exe:0x01:004308) driver.cpp#394
   0x004054B5(=bcc_cg.exe:0x01:0044B5) driver.cpp#415
   0x00405522(=bcc_cg.exe:0x01:004522) driver.cpp#420

------------------------------------------
Error 00002. 0x300010 (Thread 0x0FA4):
Resource leak: The object (0xC65D58) was never deleted

The object (0x00C65D58) [size: 4 bytes] was created with new
| element2.cpp line 6:
| 
| CS225::Element2::Element2(const Element2& rhs) 
|>  : AbstractElement(), p_val(new int(*rhs.p_val)) 
| { }
| 
Call Tree:
   0x0040E4B7(=bcc_cg.exe:0x01:00D4B7) element2.cpp#6
   0x0040E652(=bcc_cg.exe:0x01:00D652) element2.cpp#26
   0x0040D8CD(=bcc_cg.exe:0x01:00C8CD) array.cpp#81
   0x00405308(=bcc_cg.exe:0x01:004308) driver.cpp#394
   0x004054B5(=bcc_cg.exe:0x01:0044B5) driver.cpp#415
   0x00405522(=bcc_cg.exe:0x01:004522) driver.cpp#420
4

2 回答 2

2

内置,没有。它有<crtdbg.h>,但它并不像您的示例所暗示的那样全面。有各种附加组件可提供此功能。Boundschecker 是一个众所周知且流行的工具。

于 2008-11-10T21:08:47.523 回答
1

Visual Leak Detector听起来不错。不过我自己没试过。

于 2009-08-22T17:12:09.443 回答