Static Constructors

Steven Schveighoffer schveiguy at yahoo.com
Sat Oct 4 11:02:43 PDT 2008


"Saaa" <empty at needmail.com> wrote in message 
news:gc8314$24e0$1 at digitalmars.com...
>
>>
>> First one allocates new memory block.
>> Second one attempts to erase an element in-place. Dupping, however, 
>> allocates new memory, too.
>> The best solution would be as follows:
>>
>> void eraseNth(ref T[] data, int n) {
>>     data[n] = data[$-1];
>>     data.length = data.length - 1;
>> }
>
> Yay, thats how I do it :)

If you want the memory removed as soon as possible, you should zero out the 
last element, otherwise, the GC will still think the element is being 
pointed to:

data[n] = data[$-1];
data[$-1] = null;
data.length = data.length - 1;

-Steve 




More information about the Digitalmars-d-learn mailing list