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