On Saturday, 27 October 2012 at 01:08:12 UTC, Jonathan M Davis
wrote:
On Saturday, October 27, 2012 01:09:39 Alex Rønne Petersen
wrote:
On 27-10-2012 01:03, Minas wrote:
> So the delete keyword has been deprecated - so good bye
> manual memory management...
Um, no. Use destroy() from the object module instead.
Definitely, though it's important to note that what it's doing
is inherently different. It destroys what you pass to it but
does _not_ free the memory, which is why it's safer.
To free memory
from the GC, use core.memory.GC.free().
Yes. But using core.memory.GC.free is unsafe for the same
reasons that delete is. It's just that it's a druntime function
instead of a part of the language, so it's less likely for
someone to free GC memory without knowing what they're doing.
It's there because there _are_ times when it makes sense and is
useful, but it's definitely not safe, so you have to be careful
and know what you're doing.
What do you mean by saying "it's definitely not safe" here?
I mean: if I'm careful and know what I'm doing, e.g. remove all
the reference to any part of the `object` before call
core.memory.GC.free(object), is there still any inherit "unsafe"
side of `free` I should be aware of?
FYI: I just described my use case here:
https://forum.dlang.org/post/hzryuifoixwwywwif...@forum.dlang.org