views:

571

answers:

2

Is there anything in Visual Studio that will report memory leaks like Codeguard?

eg:

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
+2  A: 

Built in, no. It has <crtdbg.h>, but it's not as comprehensive as implied by your example. There are various add-ons that provide this functionality. Boundschecker is a well-known and popular one.

Roger Lipscombe
A: 

http://dmoulding.googlepages.com/vld sounds pretty good. I haven't tried it yet myself, though.

Stuart P. Bentley