00001
00002
00003
00004 #include <stdlib.h>
00005 #include <stdio.h>
00006 #include <string.h>
00007 #include <time.h>
00008 #include <sys/types.h>
00009
00010
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
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