5.4 alloc
#define ALLOCSIZE 10000 /* size of available space */
static char allocbuf[ALLOCSIZE];
static char *allocp = allocbuf;
char *alloc(int n) /* return pointer to n characters */
{
if(allocbuf + ALLOCSIZE - allocp >= n){
allocp += n;
return allocp - n;
} else /* not enough room */
return 0;
}
void afree(char *p) /* free storage pointed to by p */
{
if(allocp >= allocbuf && allocp < allocbuf + ALLOCSIZE)
allocp = p;
}
#include <stdio.h>
int main()
{
char *p;
p = alloc(10);
p[0] = 'u';
p[1] = '\0';
printf("%s, %p\n", p, p);
afree(p);
printf("%s, %p\n", p, p);
return 0;
}