Andrei Alexandrescu wrote:
Michel Fortin wrote:
On 2010-02-14 15:41:30 -0500, Andrei Alexandrescu
<seewebsiteforem...@erdani.org> said:
Michel Fortin wrote:
Hum, what's the syntax for placement delete?
There is no need for placement delete. There will be a function
clear() in object.d that only calls the destructor. (That is needed
regardless.) You can carry deallocation with your own API functions.
What's the point in wasting a function name only to call the
destructor? Why not just allow "object.~this()"?
You might want to clear an int etc. for which it's unclear whether the
above should work.
Also, if you really want to put an object back in it's initial state,
you could call both the destructor and the constructor. Anything else
is going to break the object's invariant. I think it's best to leave
breaking the object's invariants to a special syntax, hence
"object.~this()".
Yah, clear destroys and then fills with .init.
How is filling with .init not a waste of time?
Now I'm not really sure, but I'm going to guess... you think it's safer?
I don't think "reusing" objects is safe memory management. OK, you
probably could still sandbox such a program, and there will never be
segfaults (except null pointer accesses). But the user could still have
references to "dead" objects. Or even worse, "false" objects, that have
been reinitialized even though some other parts of the program needed
the old object. There, you have the same mess as with traditional manual
memory allocation.
As a D user, I'm kindly asking for actually safe memory management
primitives, that are more efficient than the old GC.
By the way, what does "paraphernalia" mean?
Andrei