fastmalloc.c
author viric@mandarina
Sat, 11 Aug 2007 16:01:25 +0200
changeset 3 ba1b3c2fcff2
parent 2 57a1fcb0c75c
child 5 c87681fff7d3
permissions -rw-r--r--
Less memory use, less often output.

#include <stdio.h>
#include <stdlib.h>
#include "dictre.h"

static int given = 0;
static int sysallocated = 0;
static void *base = 0;

enum {
    STEP = 5*1024*1024
};

void * fastmalloc(int newsize)
{
    void *outptr;

    outptr = base + given;

    given += newsize;

    if (given > sysallocated)
    {
        if (STEP > newsize)
        {
            base = realloc(base, STEP);
            sysallocated += STEP;
        }
        else
        {
            base = realloc(base, newsize);
            sysallocated += newsize;
        }
    }

    return outptr;
}