Click here to Skip to main content
11,644,136 members (72,482 online)
Click here to Skip to main content

Catching memory leaks

, 4 Oct 2000 189.6K 1.4K 48
Rate this:
Please Sign up or sign in to vote.
How catch memory leaks with very little effort
<!-- Link to demo file download -->
  • Download demo project - 7 Kb
  • <!-- Add the rest of your HTML here -->

    Introduction

    I would like share with you some experience in catching memory leaks. In most case it is a long processe and required additional tools like PurifyNT or BoundsChecker. Actually, catching simple memory leaks is possible by using the Microsoft exported functionality.

    In a simple case you should add several lines to 'StdAfx.h'

    #ifdef _DEBUG
       #define _CRTDBG_MAP_ALLOC // include Microsoft memory leak detection procedures
       #define _INC_MALLOC	     // exclude standard memory alloc procedures
    #endif
    

    Note: it should be before the 'include' directives.

    In the enclosed example you will find an example with a memory leak. To see how it works you should run program under the debugger. When the program finishes you will see in the the 'Output' window, 'Debug' tab the following message.

    Detected memory leaks!
    Dumping objects -> D:\Projects\CrtDbg\CrtDbg.cpp(25) : {53} normal block at 0x002F26C0, 10 bytes long.
    Data: <MemoryLeak> <MEMORYLEAK> 4D 65 6D 6F 72 79 4C 65 61 6B 
    Object dump complete.
    

    In more advanced memory management cases you should look in the 'AfxMem.cpp' file in MFC source directory. File contents plenty of memory management functions.

    I have written a class CMemDiff that wraps CMemoryState and helps track memory leaks. Just include the MemDiff files in your project. A global variable of type CMemDiff is declared and it's constructor and destructor will check the state of your memory at the start and end of your program and report any leaks.

    License

    This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

    A list of licenses authors might use can be found here

    Share

    About the Author

    Audrius Vasiliauskas
    Business Analyst
    Lithuania Lithuania
    No Biography provided

    You may also be interested in...

    Comments and Discussions

     
    GeneralUnhandled exception in ntdll Pin
    ed welch16-Apr-09 12:59
    membered welch16-Apr-09 12:59 
    GeneralRe: Unhandled exception in ntdll Pin
    Audrius Vasiliauskas18-Apr-09 6:53
    memberAudrius Vasiliauskas18-Apr-09 6:53 
    Generalerror C2065: 'alloca' : undeclared identifier Pin
    safety_ruk25-May-06 22:13
    membersafety_ruk25-May-06 22:13 
    GeneralRe: error C2065: 'alloca' : undeclared identifier Pin
    akulkarni19-Jul-06 11:42
    memberakulkarni19-Jul-06 11:42 
    GeneralRe: error C2065: 'alloca' : undeclared identifier Pin
    akulkarni19-Jul-06 11:42
    memberakulkarni19-Jul-06 11:42 
    Questionafxpriv.h Pin
    ehh8-Sep-05 8:49
    memberehh8-Sep-05 8:49 
    QuestionHow to find real leaked point Pin
    murakami15-Aug-05 22:44
    membermurakami15-Aug-05 22:44 
    AnswerRe: How to find real leaked point Pin
    Tim Read29-May-06 6:23
    memberTim Read29-May-06 6:23 
    AnswerRe: How to find real leaked point Pin
    murakami29-May-06 17:01
    membermurakami29-May-06 17:01 
    GeneralRe: How to find real leaked point Pin
    Tim Read30-May-06 23:20
    memberTim Read30-May-06 23:20 
    GeneralDebugging a DLL - no StdAfx.h available Pin
    bschorre30-Mar-05 2:00
    memberbschorre30-Mar-05 2:00 
    GeneralAn extremely useful tip Pin
    Anonymous11-Apr-04 19:52
    sussAnonymous11-Apr-04 19:52 
    GeneralRe: An extremely useful tip Pin
    worksopbenny7-Jun-04 22:54
    memberworksopbenny7-Jun-04 22:54 
    GeneralSoooooooo Coooooool Pin
    internal10-Jun-04 16:28
    memberinternal10-Jun-04 16:28 
    GeneralRe: An extremely useful tip Pin
    peterboulton9-Dec-04 1:24
    memberpeterboulton9-Dec-04 1:24 
    GeneralRe: An extremely useful tip Pin
    RainKing Fool4-Oct-05 15:43
    memberRainKing Fool4-Oct-05 15:43 
    Generalabout VC7 Pin
    Muhammad Ahmed5-Feb-04 0:14
    memberMuhammad Ahmed5-Feb-04 0:14 
    GeneralNot Getting the path where actully memory leak occuring Pin
    Jaymin5-Aug-03 2:26
    memberJaymin5-Aug-03 2:26 
    GeneralMemory Leak Pin
    Sivakumar R27-Mar-03 23:59
    sussSivakumar R27-Mar-03 23:59 
    Generalabout call stack Pin
    Ning Cao7-Jan-03 15:55
    memberNing Cao7-Jan-03 15:55 
    GeneralRe: about call stack Pin
    Mike Nordell7-Jan-03 16:25
    memberMike Nordell7-Jan-03 16:25 
    Ning Cao wrote:
    Could anyone tell me how to find the Call stack information from my PROGRAM?

    Have you done your Googling and searched CP itself before asking? Well, maybe it's easy to miss stuff like this.
    GeneralRe: about call stack Pin
    Ning Cao7-Jan-03 16:35
    memberNing Cao7-Jan-03 16:35 
    GeneralRe: about call stack Pin
    Kita24-Jun-03 21:33
    memberKita24-Jun-03 21:33 
    Generalabout custom memory management Pin
    Ning Cao7-Jan-03 15:50
    memberNing Cao7-Jan-03 15:50 
    GeneralMemory leak detection Pin
    Yud27-Feb-01 21:48
    memberYud27-Feb-01 21:48 
    GeneralI also meet this problem, can anyone give me some idea? Pin
    benben8-Dec-03 15:38
    memberbenben8-Dec-03 15:38 
    QuestionATL support? Pin
    Michael Groeger17-Jan-01 22:50
    memberMichael Groeger17-Jan-01 22:50 
    AnswerRe: ATL support? Pin
    Audrius Vasiliauskas17-Jan-01 23:22
    memberAudrius Vasiliauskas17-Jan-01 23:22 
    GeneralRe: ATL support? Pin
    Michael Groeger6-Feb-01 2:42
    memberMichael Groeger6-Feb-01 2:42 
    GeneralRe: ATL support? Pin
    Stuart Tett18-May-05 7:19
    sussStuart Tett18-May-05 7:19 
    GeneralRe: ATL support? Pin
    Yud27-Feb-01 21:43
    memberYud27-Feb-01 21:43 
    GeneralDoesn't work all the time Pin
    Daníel B. Sigurgeirsson10-Oct-00 6:49
    sussDaníel B. Sigurgeirsson10-Oct-00 6:49 
    GeneralPRB: _CRTDBG_MAP_ALLOC Does Not Work as Documented Pin
    Martin Ziacek15-Sep-00 8:30
    sussMartin Ziacek15-Sep-00 8:30 
    GeneralRe: PRB: _CRTDBG_MAP_ALLOC Does Not Work as Documented Pin
    Anonymous2-Nov-00 22:05
    sussAnonymous2-Nov-00 22:05 
    GeneralRe: PRB: _CRTDBG_MAP_ALLOC Does Not Work as Documented Pin
    Anonymous2-Nov-00 22:05
    sussAnonymous2-Nov-00 22:05 
    GeneralRe: PRB: _CRTDBG_MAP_ALLOC Does Not Work as Documented Pin
    Anonymous2-Nov-00 22:06
    sussAnonymous2-Nov-00 22:06 
    QuestionHow about DEBUG_NEW Pin
    JRB12-Sep-00 5:11
    sussJRB12-Sep-00 5:11 
    AnswerRe: How about DEBUG_NEW Pin
    Audrius Vasiliauskas13-Sep-00 22:34
    sussAudrius Vasiliauskas13-Sep-00 22:34 
    QuestionHow about DEBUG_NEW Pin
    JRB12-Sep-00 5:10
    sussJRB12-Sep-00 5:10 

    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
    Web03 | 2.8.150731.1 | Last Updated 5 Oct 2000
    Article Copyright 2000 by Audrius Vasiliauskas
    Everything else Copyright © CodeProject, 1999-2015
    Layout: fixed | fluid