On Wednesday, 23 September 2020 at 04:15:51 UTC, mw wrote:
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?

'"delete" is unsafe' doesn't mean 'any program which uses "delete" is unsafe'. What it means is, in a language that has 'delete', /some/ programs will be unsafe. If your language has delete, you cannot guarantee that programs will be safe.

Now, D is not safe by default ('delete' would definitely be disallowed in @safe code), but it still wants to have features that /encourage/ safety (fat pointers are a great example of this).

'delete' and 'free' are both equally unsafe; however, if you have verified that your usage of them is safe, it is fine to use them.

Reply via email to