Deallocate array?

Matic Kukovec matic.kukovec at pametnidom.si
Thu May 9 17:58:06 PDT 2013


Hi again Steve, or anyone else whose reading this.
I was playing around with D and C# and need help getting this 
array stuff to work.

My D program:
import std.stdio, std.cstream, std.array;

void main()
{
	string[] temp_array = new string[100000000];
	for(int i=0;i<100000000;i++)
	{
		temp_array[i] = "aaaaaaaaaaaaaaaaaaaaa";
	}		
	temp_array = null;
	
	temp_array = new string[100000000];
	for(int i=0;i<100000000;i++)
	{
		temp_array[i] = "aaaaaaaaaaaaaaaaaaaaa";
	}
	temp_array = null;
	
	writeln("end");	

	din.getc();
}

This program causes an OutOfMemoryError.


My C# program:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace testing
{
     class Program
     {
         static void Main(string[] args)
         {

             string[] temp_array = new string[100000000];
             for (int i = 0; i < 100000000; i++)
             {
                 temp_array[i] = "aaaaaaaaaaaaaaaaaaaaa";
             }
             temp_array = null;

             temp_array = new string[100000000];
             for (int i = 0; i < 100000000; i++)
             {
                 temp_array[i] = "aaaaaaaaaaaaaaaaaaaaa";
             }
             temp_array = null;

             temp_array = new string[100000000];
             for (int i = 0; i < 100000000; i++)
             {
                 temp_array[i] = "aaaaaaaaaaaaaaaaaaaaa";
             }
             temp_array = null;


             Console.WriteLine("end");
             Console.ReadKey(true);
         }
     }
}

It's the same program, but doesn't cause and OutOfMemory 
exception, even if i double the times i run the loop part.

My question is what is how do i get the same C# functionality in 
D without running out of memory and preferably without using the 
GC directly?

I'm running Windows Vista 64bit, DMD 2.062 fresh install, 
compiling with "-m32" flag.


More information about the Digitalmars-d-learn mailing list