Are D classes always garbage collected?

Vladimir Panteleev vladimir at thecybershadow.net
Wed Dec 21 21:01:53 PST 2011


On Thursday, 22 December 2011 at 04:15:25 UTC, Froglegs wrote:
>
>>> You can allocate classes anywhere, if you're OK with 
>>> forfeiting safety guarantees. For example, see emplace in 
>>> std.conv:
>>>
>>> http://dlang.org/phobos/std_conv.html#emplace
>
> Hum calling emplace ending up calling this bit of code..
>
> T* emplace(T)(T* chunk)
>   if (is(T == class))
> {
>   *chunk = null;
>   return chunk;
> }
>
> Which returned me a nice fat null pointer.. wth? Perhaps that 
> should be a compile time error if you aren't supposed to use 
> classes..

Strange... I'm not sure what the deal is with that overload. I 
meant the last one on the page (that takes a void[]).

> I tried placement new syntax but this tells me I need an 
> allocator, whatever that means..

http://www.d-programming-language.org/memory.html#newdelete

Note that this feature is on its way to be deprecated. emplace 
and clear are the future-proof method.


More information about the Digitalmars-d-learn mailing list