HI coders !
Here is a code well commented snippet :
void stop( PROCESS_INFORMATION* p ) // enters in "stop" with "p ==
NULL"
{
static PROCESS_INFORMATION pi;
p = π //now p != NULL and "pi" IS STATIC!!! so when we
leave "stop" func
} // p must still point to static address
of "pi" , so p != NULL when we
// leave stop func
void foo( PROCESS_INFORMATION* p )
{
PROCESS_INFORMATION* pp = NULL;
static int i = 10;
while( i-- )
foo( pp ); // after 10 iterations we pass to function "stop"
stop( pp ); // here enters in "stop" with "pp == NULL"
// pp MUST BE != NULL!!!!!!!!!!!!
assert( pp != NULL ); /////// WHY pp == NULL ??????
}
int main(int argc,char** argv)
{
foo(NULL); // recursion begins
return 1;
}
THE QUESTION:
why the hell when leave "stop" function pp IS STILL == NULL, isn't
'"pi" a static variable ???
Even if I put "PROCESS INFORMATION pi" as global, pp will be NULL when
I leave stop function ,,,,, why ????