On Wed, Apr 11, 2012 at 07:07:54PM +0200, Johannes Pfau wrote: > Am Tue, 10 Apr 2012 20:28:28 +0200 > schrieb Marco Leise <marco.le...@gmx.de>: > > > Am Tue, 10 Apr 2012 07:35:31 -0400 > > schrieb "Steven Schveighoffer" <schvei...@yahoo.com>: > > > > > Destructors are strictly for cleaning up resources that *AREN'T* > > > allocated by the GC. For example anything created with C's > > > malloc, or an open file descriptor, etc. > > > > This I think is a very good advice to beginners. Short and precise. > > It is much more fun to use a new language when you can also free > > your mind from some archaic concepts now and then :) > > > > That's a dangerous advice though: You can create lots of file > descriptors without allocating much memory. So in the worst case you > run out of file-descriptors long before the GC calls your destructor.
Yeah, one should not rely on the GC to destroy objects at a given time, since it can be arbitrarily distant in the future. For releasing resources, what really should be used are scope statements: auto myResource = acquireResource; scope(exit) myResource.release(); T -- Windows 95 was a joke, and Windows 98 was the punchline.