指针可以将局部变量的内存指向其范围之外吗?

Kai*_*dul 2 c c++ pointers

void foo(int** ptr) {
    int value = 4;
    *ptr = &value;
//    **ptr = value;
}

int main(void) {
    int value = 7;
    int* ptr = &value;
    foo(&ptr);
    cout << *ptr << endl; // 4
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 由于value = 4在返回后不再有效/超出范围foo,为什么*ptr显示4而不是一些垃圾值?

bar*_*nos 6

正式答案:未定义的行为.

实际答案:堆栈上的其他操作尚未覆盖该值.