www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - garbage collection & use for delete

reply akcom <CppCoder gmail.com> writes:
As I currently understand it, "deleting" an object simply marks it as 
ready for deletion when the garbage collector makes its period sweeps. 
After skimming through the phobos std source, I saw very VERY little use 
of the delete keyword, especially in regards to classes.  My question 
is, how does the gc know when those classes are no longer being 
referenced? Also, are the explicit delete's I'm using on .dup'ed 
strings, classes, etc useless?
Mar 05 2006
parent Brad Roberts <braddr puremagic.com> writes:
On Sun, 5 Mar 2006, akcom wrote:

 As I currently understand it, "deleting" an object simply marks it as ready
 for deletion when the garbage collector makes its period sweeps. After
 skimming through the phobos std source, I saw very VERY little use of the
 delete keyword, especially in regards to classes.  My question is, how does
 the gc know when those classes are no longer being referenced? Also, are the
 explicit delete's I'm using on .dup'ed strings, classes, etc useless?

I'm fairly sure your understanding is wrong. You don't have to explicitly delete objects and they will be cleaned up at some point by the garbage collector (though that's not guaranteed in the face of things like the program exiting). However, if you explicitly delete something, it's destructor is called right then and there and the memory becomes available for reuse immediately. The docs on this are incomplete, imho, so I'll file a bug asking that they be elaborated upon: http://www.digitalmars.com/d/expression.html#DeleteExpression Later, Brad
Mar 05 2006