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.