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

Reply via email to