int* f(int x) { int *p; if (x) { int y = 3; p = &y; /* ok */ } /* ok, but p now dangling */ /* y = 4 does not compile */ *p = 7; /* could CRASH but probably not */ return p; /* uh-oh, but no crash yet */ } void g(int *p) { *p = 123; } int main(int argc, char **argv) { g(f(7)); /* HOPEFULLY YOU CRASH (but maybe not) */ }