delete a dynamic array

tsalm tsalm at free.fr
Sun Oct 12 04:59:36 PDT 2008


>>  It's certainly a stupid question...
>>  I want to delete an dynamic array of the memory.
>> I don't understand why the example above doesn't clear the memory uses
>> by
>> the array :
>> /* ------------------------------- */
>> import tango.time.Time;
>> import tango.io.Stdout;
>> import tango.stdc.stdio;
>> import tango.core.Memory;
>> void main()
>> {
>> // Create a big array
>> int[] t = new int[100000000];
>> // delete the array
>> t = null;
>> // Clean the memory
>> GC.collect();
>> GC.minimize();
>> // No, it's not free :-(
>> Stdout("Now, the memory must be free...")();getchar;
>> }
>> /* ------------------------------- */
>>  How can I totally clear this array of the memory ?
>>  Thanks in advance,
>> TSalm
>
>
>
> I had the same problem. It seems to me that Tango GC just doens't  
> collect dynamically allocated arrays! (But collects when you use  
> t.lenght)
>
> This worked for me:
>
> import tango.core.Memory;
>
> GC.free (t.ptr);
>
>

Not for me :(
Here is my code :
/*---------------------------------------*/
import tango.io.Stdout;
import tango.stdc.stdio;
import tango.core.Memory;


void main()
{
  // Create a big array
  int[] t; // = new int[100000000];
  t.length = 100000000 ;

  // delete the array
  GC.free (t.ptr);

  // Clean the memory
  GC.collect();
  GC.minimize();

  // No, it's not free :-(
  Stdout("Now, the memory must be free...")();getchar;
}


More information about the Digitalmars-d-learn mailing list