Static Constructors

Denis Koroskin 2korden at gmail.com
Sat Oct 4 16:00:30 PDT 2008


On Sat, 04 Oct 2008 22:02:43 +0400, Steven Schveighoffer  
<schveiguy at yahoo.com> wrote:

>
> "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
>
>

Great advice, thanks!


More information about the Digitalmars-d-learn mailing list