home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 March / VPR9703A.ISO / VPR_DATA / DOGA / SOURCES / POLYEDIT.LZH / ML / ALLOC.C < prev    next >
C/C++ Source or Header  |  1996-04-19  |  846b  |  55 lines

  1. /*
  2.  *        メモリ管理
  3.  *
  4.  *        T.Kobayashi        1993.10.24
  5.  */
  6.  
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9.  
  10. #include "inlib.h"
  11.  
  12. extern    void    (*ErrorExec)();
  13.  
  14. #define    MALLOC_MAGIC    0x12345678
  15.  
  16. typedef    struct    {
  17.     int        magic ;
  18.     int        size ;
  19. } MemoryHeader ;
  20.  
  21. void    *MemoryAlloc( size )
  22. int        size ;
  23. {
  24.     MemoryHeader    *mem ;
  25.  
  26.     mem = malloc( size + sizeof( MemoryHeader ) );
  27.     if ( mem == NULL )
  28.         return NULL ;
  29.     mem->magic = MALLOC_MAGIC ;
  30.     mem->size = size ;
  31.  
  32. #if    1
  33.     printf( "malloc( %d ) : %08X\n", size, mem );
  34. #endif
  35.  
  36.     return (void*)( mem + 1 );
  37. }
  38.  
  39. void    MemoryFree( ptr )
  40. void    *ptr ;
  41. {
  42.     char            buf[256] ;
  43.     MemoryHeader    *mem ;
  44.  
  45.     mem = (MemoryHeader*)ptr - 1 ;
  46.  
  47.     if ( mem->magic != MALLOC_MAGIC )
  48.     {
  49.         sprintf( buf, "[ml]:Memory Block Error(%X)!!!", mem );
  50.         (*ErrorExec)( buf );
  51.     }
  52.     mem->magic = 0 ;
  53.     free( mem );
  54. }
  55.