在第二个闭合支撑之后,b
只能通过间接通过a
.
int main() {
int *a;
{
int b = 42;
a = &b;
}
printf("%d", *a); // UB?
return 0;
}
Run Code Online (Sandbox Code Playgroud)
由于b
不再是范围,这个UB?我知道从已经返回的函数中取消引用指向非静态局部变量的指针是UB,但在这种情况下,所有内容都在同一个函数中.
这是C++中的UB,但我不确定C.