Click here to Skip to main content
13,351,457 members (47,016 online)
Click here to Skip to main content
Add your own
alternative version

Tagged as


6 bookmarked
Posted 26 Jan 2012

Setting memory allocation break point in watch window

, 5 Feb 2012
Rate this:
Please Sign up or sign in to vote.
Memory leak detection in VC++
This tip helps to utilize the contex operator :

Memory leaks in VC++ can be detected using debug heap function. To enable these, we should use:
#include <stdlib.h>
#include <crtdbg.h>

// Note that in the above code, the order of #include statements must not change

And to track memory (leaks) allocated via 'new', we can use:
#ifdef _DEBUG
#define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#define new DEBUG_NEW

Now at the end of main() or at the point of interest in the code, we should call _CrtDumpMemoryLeaks();
void main()
   // ....

The leaks, if any, are shown in the Output window as:
C:\Projects\Sample\main.cpp(10) : {30} normal block at 0x00780E80, 64 bytes long.

We can utilize the memory allocation number (30 in the above example) to identify the code which caused the leak. To do this, we can use _crtBreakAlloc or the context operator in the watch window:

Here xx should be replaced by the version of Visual Studio.
90 for VS2008
80 for VS2005 ...
In the watch window, the value of this wil be -1 initially and we can then set it to our memory allocation number to break at the appropiate code block.

To consolidate, all we have to do is this:
#include <stdlib.h>
#include <crtdbg.h>

void main()
   int* i = new int;
   // .....
   // the memory allocated with pointer i is not released and will be shown as leak

Hope now it is usable in the real world.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Lakamraju Raghuram
Software Developer
India India

Did my masters from IIT-M in Advanced Manufacturing Technology and working mainly on C++ in CAD domain from 2004 onwards.

You may also be interested in...


Comments and Discussions

GeneralReason for my vote of 5 It's very useful, I will insert this... Pin
loggy066-Feb-12 21:52
memberloggy066-Feb-12 21:52 
GeneralI have done it. If this is what you want, try thinking of ch... Pin
Lakamraju Raghuram27-Jan-12 3:04
memberLakamraju Raghuram27-Jan-12 3:04 
GeneralOh... you see lot of noise? I do not see that way. All you h... Pin
Lakamraju Raghuram27-Jan-12 2:59
memberLakamraju Raghuram27-Jan-12 2:59 
GeneralReason for my vote of 1 Without some code that utilizes this... Pin
Paul Tait27-Jan-12 2:18
memberPaul Tait27-Jan-12 2:18 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.180111.1 | Last Updated 5 Feb 2012
Article Copyright 2012 by Lakamraju Raghuram
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid