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