00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __SMALLOC_H__
00025 #define __SMALLOC_H__
00026
00027
00028 #include <stdlib.h>
00029
00030 #include "debug.h"
00031
00032
00033
00034
00035
00036 #define M_EXIT 1
00037 #define M_DONTEXIT 2
00038 #define M_ZERO 4
00039
00040
00041 #define MALLOC(ptr, cast, size, flags) \
00042 do { \
00043 (ptr) = (cast) malloc((size)); \
00044 if (!((flags) & M_DONTEXIT) && ((ptr) == NULL)) \
00045 { \
00046 DebugMessage(DEBUG_ALL, "malloc: out of memory (allocating %d bytes)\n", (size)); \
00047 exit(1); \
00048 } \
00049 if (((flags) & M_ZERO) && ((ptr) != NULL)) \
00050 memset((ptr), '\0', (size)); \
00051 } while (0)
00052
00053
00054 #define FREE(ptr) \
00055 do { \
00056 if ((ptr) == NULL) \
00057 { \
00058 DebugMessage(DEBUG_ALL, "free: NULL pointer given as an argument\n"); \
00059 exit(1); \
00060 } \
00061 free((ptr)); \
00062 ptr = NULL; \
00063 } while(0)
00064
00065
00066
00067 #endif