c - What happens to initialization of static variable inside a function -
after stumbling onto this question , reading little more here (c++ issue works same in c/c++ afain) saw no mention realy happening inside function.
void f(){ static int c = 0; printf("%d\n",c++); } int main(){ int = 10; while(i--) f(); return 0; } in snippet, c lifetime entire execution of program, line static int c = 0; has no meaning in next calls f() since c defined (static) variable, , assignment part obsolete (in next calls f()), since takes place @ first time.
so, compiler do? split f 2 functions - f_init, f_the_real_thing f_init initializes , f_the_real_thing prints, , calls 1 time f_init , onward, calls f_the_real_thing?
although standard not dictate how compilers must implement behavior, compilers less sophisticated thing: place c static memory segment, , tell loader place 0 c's address. way f comes straight pre-initialized c, , proceeds printing , incrementing if declaration line not there.
in c++ optionally adds code initialize c static initialization function, initializes static variables. in case, no call required.
in essence, amounts c starting lifetime before first call f. can think of c's behavior if static variable outside f() visibility constrained f()'s scope.
Comments
Post a Comment