On 9/19/07, Michael L Torrie <[EMAIL PROTECTED]> wrote: > Manual memory management is often, in my opinion, a huge plus of C and > C++. With reference-counting smart pointers and destructors, memory > management in C++ is very straight-forward, fast, and safe. Just
I agree. Using smart pointers makes a big difference. > understanding a bit about how C++ does scoping, and you can very easily > build and destroy entire data structures all without a single leak and > without having to rely on a garbage collector. Not saying a GC is bad; > simply that it's not always necessary. I also agree. A proper understanding of memory management does your body good. > With only a few caveats, C++ programmers can easily move to programming > in Java and dealing with the GC dropping references right and left. But > it rarely works the other way. 9/10 core dumps in the BYU CS 240 class > are because of Java. It pollutes C++ programmers like nothing else! The problem isn't a high-level language. The problem is dumb BYU CS students ;-). > One of the caveats for C++ programmers is the way that C++ guarantees > destruction when an object goes out of scope, especially when you rely > on the side effects. Guaranteed destruction doesn't translate directly > into Java, although the "finalize" keyword can help (if I recall > correctly). A good article on the idea is at > http://royontechnology.blogspot.com/2007/01/deterministic-destruction-of-objects-in.html Finalize actually has its warts. It does provide somewhat of a nondeterministic destructor, but using it delays your object from being collected for an extra generation. Not a huge issue, but if you want better heap control and deterministic clean-up of resources, it's best to use a standard method that you manually call. -Bryan /* PLUG: http://plug.org, #utah on irc.freenode.net Unsubscribe: http://plug.org/mailman/options/plug Don't fear the penguin. */
