int *x;
{
int y;
x = &y;
}
*x = 5;
我认为问题是x =& y应该改为x = y。但是,我仍然不知道为什么会崩溃?
答案 0 :(得分:1)
int y
的生命周期以}
令牌结束。由于指针x
指向y
,我们现在将x
称为“悬空指针”。使用*x
取消引用悬空指针是未定义的行为,如果你很幸运,可能会导致崩溃或其他令人讨厌的事情。
答案 1 :(得分:0)
x
在第5行分配了y
的地址。第6行y
被销毁。在第7行,您尝试写入变量,x
中包含的地址。哪个被摧毁了。所以你试图写入不存在的变量,这会导致未定义的行为。