home *** CD-ROM | disk | FTP | other *** search
/ Mastering Visual Basic 6 / mastvb6.iso / numega / sc501.exe / data1.cab / Examples / LEAKERR.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1997-11-25  |  2.3 KB  |  137 lines

  1. /*
  2.  * LeakErr.cpp
  3.  * $Header: /BoundsChecker/Examples/BUGBNCHX/MAINERR/LEAKERR.CPP 3     1/09/97 3:52p Stevea $
  4.  *
  5.  * Description:
  6.  *  The Leak Check error functions.
  7.  *
  8.  * Notes:
  9.  *  <implementation notes go here>
  10.  *
  11.  ***********************************************************************
  12.  *
  13.  * Nu-Mega Technologies, Inc.
  14.  * P.O. Box 7780
  15.  * Nashua, NH 03060
  16.  *
  17.  * (c) Copyright 1994, 1995 Nu-Mega Technologies, Inc.
  18.  * ALL RIGHTS RESERVED.
  19.  *
  20.  ***********************************************************************
  21.  *
  22.  **********************************************************************/
  23. #include "stdafx.h"
  24. #include "LeakErr.h"
  25.  
  26. // Leak Check - Memory leak
  27. LPTSTR g_szGlobalBuff ;
  28. void Leak_MemoryLeak ( )
  29. {
  30.    _TRY
  31.    {
  32.       g_szGlobalBuff = new TCHAR[ 100 ] ;
  33.    }
  34.    _CATCH
  35.    {
  36.    }
  37. }
  38. // Leak Check - Memory leaked due to free
  39. typedef struct ptrblock
  40. {
  41.    char * ptr ;
  42. } PB ;
  43. void Leak_LeakFromFree ( )
  44. {
  45.    _TRY
  46.    {
  47.       PB *p ;
  48.       p = (PB *)malloc ( sizeof ( PB ) ) ;
  49.       p->ptr = (char *)malloc( 10 ) ;
  50.       free ( p ) ;
  51.    }
  52.    _CATCH
  53.    {
  54.    }
  55. }
  56. // Leak Check - Memory leaked due to reassignment
  57. void Leak_LeakFromReassign ( )
  58. {
  59.    _TRY
  60.    {
  61.       char * b ;
  62.       char   a[ 10 ] ;
  63.       b = (char *)malloc( 10 ) ;
  64.       b = a ;
  65.    }
  66.    _CATCH
  67.    {
  68.    }
  69. }
  70.  
  71. // Leak Check - Memory leaked leaving scope
  72. char * gimme ( )
  73. {
  74.    return ( (char *)malloc ( 10 ) ) ;
  75. }
  76. void Leak_LeakFromIgnore ( )
  77. {
  78.    _TRY
  79.    {
  80.       gimme ( ) ;
  81.    }
  82.    _CATCH
  83.    {
  84.    }
  85. }
  86. void Leak_LeakFromScope ( )
  87. {
  88.    _TRY
  89.    {
  90.       int i = 10 ;
  91.       if ( 10 == i )
  92.       {
  93.          char * p = (char *)malloc ( 10 ) ;
  94.       }
  95.    }
  96.    _CATCH
  97.    {
  98.    }
  99. }
  100.  
  101. // Leak Check - Resource leak.
  102. void Leak_ResLeakBitmap ( )
  103. {
  104.    _TRY
  105.    {
  106.       HBITMAP hBitMap = CreateBitmap ( 80 , 80 , 1 , 8 , NULL ) ;
  107.    }
  108.    _CATCH
  109.    {
  110.    }
  111. }
  112. void Leak_ResLeakMetafile ( )
  113. {
  114.    _TRY
  115.    {
  116.       HDC hDCMeta = CreateMetaFile ( NULL ) ;
  117.    }
  118.    _CATCH
  119.    {
  120.    }
  121. }
  122. void Leak_ResLeakMenu ( )
  123. {
  124.    _TRY
  125.    {
  126.       HMENU hMenu = CreateMenu ( ) ;
  127.       AppendMenu ( hMenu                  ,
  128.                    MF_ENABLED | MF_STRING ,
  129.                    900                    ,
  130.                    _T ( "&New Menu Item" ) ) ;
  131.    }
  132.    _CATCH
  133.    {
  134.    }
  135. }
  136.  
  137.