#define ALLOCSIZE 10000 /* size of available space */ static char allocbuf[ALLOCSIZE]; /* storage for alloc */ static char *allocp = allocbuf; /* next free position */ char *alloc(int n){ /* return pointer to n characters */ if (allocbuf + ALLOCSIZE - allocp >= n) { /* it fits */ allocp += n; return allocp - n; /* old p */ } else /* not enough room */  return 0; } /*C guarantees that zero is never a valid address for data, so a return value of zero can be used to signal an abnormal event, in this case no space.*/ void afree(char *p){ /* free storage pointed to by p */ if (p >= allocbuf && p < allocbuf + ALLOCSIZE) allocp = p; }