Running this program with Tango SVN + DMD 1.045 or Tango 0.98 + DMD 1.041 on WinXP SP3 32-bit results in a memory leak (the program keeps increasing in size at every iteration)

leak.d:
-------------------------------------------
module leak;

import tango.stdc.stdio;
import tango.core.Memory;

struct Data
{
        Data* prev;
        char[4092] something;
}

public void main()
{
        Data* data;
        Data* newData;
        int i;
        while(true)
        {
                for(i = 0; i < 10_000; i++)
                {
                        newData = new Data;
                        newData.prev = data;
                        data = newData;
                }
                data = null;
                newData = null;
                i = 0;
                GC.collect();
                printf("Iteration...");
                fflush(stdout);
                fgetc(stdin);
        }
}
-------------------------------------------

Running it through a debugger shows that at the printf, the entire contents of the stack frame of main is zeros and there's no global data referenced by the program.

Reply via email to