Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vdr] Re: memory leak?



Did some tests with the following code:
(gcc/g++ 2.95.3)

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <malloc.h>

main()
{
        int i=0,j=0,k=0;
        char s[256];
        char *c;
        initstate(99, s, 1000000L);
        printf("vmsize is now?\n");
        scanf("%i",&i);
        for (i=0; i<1000000; i++)
        {
                k=random()/2000;
                if (k>j) j=k;
                c=(char*)malloc(k);
                free(c);
                //c=new (char)[k];
                //delete(c);
        }
        printf("and now?\n");
        scanf("%i",&i);
        printf("max-malloc:%ld\n",j);
        exit(0);
}

result with malloc:
vmsize=1732 rss=580
after
vmsize=2756 rss=732 (that varies but not directly related with max-malloc)

result with new/delete quite the same. However - only with random sizes! If 
you allocate always the same size the process shrinks at his previous vmsize 
value exactly (but a few kb rss more).

What does that tell us?





Home | Main Index | Thread Index