Click here to Skip to main content
Click here to Skip to main content

Tagged as

Setting memory allocation break point in watch window

, 5 Feb 2012 CPOL
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.

Comments and Discussions

GeneralReason for my vote of 5 It's very useful, I will insert this... Pinmemberloggy066-Feb-12 21:52 

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

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

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