where_is_tftp where_is_tftp - 1 year ago 78
C++ Question

returning static pointer to local variable from function

I've found this code on web as an example, but I think this is not correct. An address to automatic variable is returned and this is just coincidence that it might work sometimes:

returning a pointer to an destroyed local variable, which becomes invalid memory location, is undefined behavior.

My only little hesitancy is about the pointer being

, but I think this changes nothing as this is the variable that should be
not a pointer: local variable is going to be destroyed. Can you please confirm or deny?

double *& showNumber()
double n = 1550.85;
static double *v = &n;
return v;

int main(int argc, char *argv[])
double sn = *showNumber();
sn = *showNumber();

Answer Source

For this code to be well-defined, both n and v would need to be static.

Right now, the *showNumber() has undefined behaviour as it dereferences a dangling pointer.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download