Main Page | Modules | Class List | Directories | File List | Class Members | File Members | Related Pages

hi_util_xmalloc.c

Go to the documentation of this file.
00001 /*
00002 **  util.c
00003 */
00004 #include <stdlib.h>
00005 #include <stdio.h>
00006 #include <string.h>
00007 #include <time.h>
00008 #include <sys/types.h>
00009 
00010 //#define MDEBUG
00011 
00012 static unsigned msize=0;
00013 
00014 void * xmalloc(size_t byteSize)
00015 {
00016 #ifdef MDEBUG
00017    int * data = (int*) malloc( byteSize + 4 );
00018    unsigned m = msize;
00019 
00020    if(data)memset(data,0,byteSize+4);
00021 #else
00022    int * data = (int*) malloc( byteSize );
00023    if(data)memset(data,0,byteSize);
00024 #endif
00025 
00026    if( data == NULL )
00027     {
00028         return NULL;
00029     }
00030 
00031 #ifdef MDEBUG
00032 
00033         msize += byteSize + 4;
00034 
00035         *data = byteSize+4;
00036 
00037     //printf("** xmalloc msize=%u, allocbytes=%d, msize=%u  %x\n", m, byteSize+4, msize, data);
00038 
00039         data++;
00040 
00041     return data;
00042 
00043 #else
00044 
00045         msize += byteSize;
00046 
00047     return data;
00048 #endif
00049 }
00050 
00051 void xfree( void * p )
00052 {
00053 #ifdef MDEBUG
00054    unsigned m = msize;
00055    int  *q = (int*)p;
00056    q--;
00057    msize -= *q;
00058 
00059    free(q);
00060       
00061 #else
00062    
00063    free(p);
00064 
00065 #endif
00066 
00067    
00068 }
00069 
00070 void xshowmem()
00071 {
00072 #ifdef MDEBUG
00073           printf("xmalloc-mem: %u bytes\n",msize);
00074 #endif
00075 }
00076 
00077 char *xstrdup(const char *str)
00078 {
00079         char *data = (char *)xmalloc( strlen(str) + 1 );
00080     
00081         if(data == NULL)
00082     {
00083         return NULL;
00084     }
00085 
00086     strcpy(data,str);
00087 
00088     return data;
00089 }
00090 

Generated on Sun May 14 14:51:15 2006 by  doxygen 1.4.2