alloc_afree#

alloc_afree.c

#define ALLOCSIZE 1000              /* 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)
    {
        allocp += n;
        return allocp - n; /* old p */
    }
    else
        return 0;
}


void afree(char *p) /* free storage pointed to by p */
{
    if(p >= allocbuf && p < allocbuf + ALLOCSIZE)
        allocp = p;
}

int main(void)
{
    char *p;
    printf("%p\n",allocp);

    p=alloc(100);
    printf("%p\n",allocp);

    afree(p);
    printf("%p\n",allocp);

    return 0;
}