On 6/13/06, Michael L Torrie <[EMAIL PROTECTED]> wrote:
I'm not quite using my terms right. As you say, a static thing is
generally something that is allocated once and only once. I'm talking
about something different. In C++ you can allocate objects in a non-
dynamic fashion (ie "ClassName instance(blah)") and it is allocated on
the stack, not the heap, and has a strictly controlled lifetime.
Because of this the likelihood of a leak is much reduced.
C++:
void no_leak() {
MyObject obj(1, 2, 3);
}
Local variable. Allocated on the stack. Falls out of scope shortly. No leaks.
How do you statically allocate on the stack a more complicated object
that requires several parameters in the constructor?
Java:
void noLeak() {
MyObject obj = new MyObject(1, 2, 3);
}
Local variable. Sometimes called an automatic variable in Java-terms.
Allocated on the heap (which is really just a stack in the case of
auto vars). Falls out of scope shortly. GC will pop this off the
heap-stack-thingy. No leaks.
Same result and almost the same technique is used by the both the C++
and Java runtimes.
Read the first part of this article for more info on Java GC:
http://www-128.ibm.com/developerworks/library/j-jtp01274.html
Teaser Quote from article:
"The JIT compiler can perform additional optimizations that can reduce
the cost of object allocation to zero."
-Bryan
/*
PLUG: http://plug.org, #utah on irc.freenode.net
Unsubscribe: http://plug.org/mailman/options/plug
Don't fear the penguin.
*/