int *x;
{
int y;
x = &y;
}
*x = 5;
I think the problem is that x = &y should be changed to x = y. However, I still don't know why it would crash?
int *x;
{
int y;
x = &y;
}
*x = 5;
I think the problem is that x = &y should be changed to x = y. However, I still don't know why it would crash?
The lifetime of int y ends at the } token. Since the pointer x was pointing at y, we now call x a "dangling pointer". Dereferencing a dangling pointer using *x is undefined behavior, which might cause a crash or other nasty things, if you're lucky.
x is assigned address of y on line 5. On line 6 y is destroyed. On line 7 you trying to write in variable, which address contained in x. Which was destroyed. So you are trying to write into non-existing variable, which leads to undefined behavior.