Microsoft Foundation Classes (mfc.hlp) (Table of Contents; Topic list)
Important Notice
The pages on this site contain documentation for very old MS-DOS software, purely for historical purposes. If you're looking for up-to-date documentation, particularly for programming, you should not rely on the information found here, as it will be woefully out of date.
AfxCheckMemory
                                              Up Contents Index Back
──Microsoft Foundation Classes──────────────────────────────────────────────
 
  BOOL PASCAL AfxCheckMemory();
 
  Remarks
 
  Iterates through all memory blocks currently allocated on the heap.
  These blocks include those allocated by new, but not those allocated by
  direct calls to underlying memory allocators such as malloc or
::GlobalAlloc. If any block is found to have corrupt guard bytes, a
  message is printed on stderr.
 
  If the block contains an object of a class derived from CObject, then
  the function reports an Object, otherwise it reports a Non-Object. It
  always reports an address that corresponds to the address printed by
  DumpAllObjectsSince.
 
  Additionally, the function validates the free memory pool, printing
  error messages as required.
 
  If the function detects no memory corruption, it prints nothing.
 
  If you include the line
 
      #define new DEBUG_NEW
 
  in a program module, then subsequent calls to AfxCheckMemory show the
  filename and line number where the memory was allocated.
 
  NOTE: If your module contains one or more implementations of
        serializable classes, then you must put the new redefinition
        statement after the last IMPLEMENT_SERIAL macro invocation.
 
  Return Value
 
  TRUE if no memory errors; otherwise FALSE.
 
  Example
 
  CAge* pcage = new CAge( 21 ); // CAge is derived from CObject
  Age* page = new Age( 22 );    // Age is NOT derived from CObject
  *(((char*) pcage) - 1) = 99;  // Corrupt preceding guard byte
  *(((char*) page) - 1) = 99;   // Corrupt preceding guard byte
  AfxCheckMemory();
 
  /*   T Y P I C A L    R E S U L T S
  memory check error at $0067495F = $63, should be $FD
  DAMAGE: before Non-Object block at $00674960
  Non-Object allocated at file test02.cxx(48)
  Non-Object located at $00674960 is 2 bytes long
 
  memory check error at $00674905 = $63, should be $FD
  DAMAGE: before Object block at $00674906
  Object allocated at file test02.cxx(47)
  Object located at $00674906 is 4 bytes long
  */
 
 
 
                                     -♦-