On Tue, 13 Jul 2010 22:42:05 +0300, bearophile <[email protected]>
wrote:
So in SafeD the delete operation can be replaced by something safer, a
way to tell the GC to deallocate just a specific object, walking the
graph and setting to null all the inbound pointers (this is a slower
operation).
I'd just like to point out that, without some careful considerations, this
would allow any code to modify memory belonging to completely unrelated
code it knows nothing about. Without careful planning it could cause the
program to crash due to null pointer dereferences in completely unrelated
areas, leaving you scratching your head why is that pointer null in the
first place.
I think that a better idea is "safe deletion": make a precise GC examine
the entire graph and make sure that the calling code has the only
reference to the object before deleting it.
(This isn't practical anyway, because it'd probably be too slow to be
useful for most cases, and doesn't apply to current D implementations.)
--
Best regards,
Vladimir mailto:[email protected]