1#define fatal(msg) fatal3(msg, __FILE__, __LINE__) 2#define new(p) if (((p)=malloc(sizeof(*(p))))); else fatal3("out of memory", __FILE__, __LINE__) 3#define dispose(p) if (!(p)) ; else (free((void*)p), (p) = (void*)0) 4#define heapmax(p) 9999999 5#define newstring(s) heap_newstring(s, __FILE__, __LINE__) 6#define newnstring(s,n) heap_newnstring(s, n, __FILE__, __LINE__) 7#define newarray(p,n) if (((p)=malloc((n)*sizeof(*(p))))); else fatal3("out of memory", __FILE__, __LINE__) 8#define renewarray(p,n) if (((p)=realloc(p,(n)*sizeof(*(p))))); else fatal3("out of memory", __FILE__, __LINE__) 9extern void fatal3(const char *s, const char *file, const unsigned int line); 10extern char * heap_newstring(const char *s, const char *file, const int line); 11extern char * heap_newnstring(const char *s, const size_t n, 12 const char *file, const int line); 13