in reply to Re: Re: Re: No braces
in thread No braces
void func() { int a, b; // allocate 3 words for a, b, c, d ... if (b) { int c; // already allocated, now visible ... } if (a) { int d; // recycle word for c, now renamed ... } ... } // a, b, c, d (3 words) all freed
C++ compilers also usually allocate the stack space when the function is entered and left also, but constructors and destructors must be executed at the marked edges of scope, unless the compiler can prove it would have no effect one way or the other.
Allocation is a detail left to the compiler, whereas the actual rules of order of operations are defined by the language spec. Play with your "output as assembler" options to check the effects of runtime overhead.
--
[ e d @ h a l l e y . c c ]
|
|---|