C ++:可以反复安全地取消引用对象的未分配指针,这是为什么?

为什么此代码实际上可靠地起作用,不是不稳定的,未定义的? 它取消引用了对象的未分配悬空指针。 谢谢。

#include <iostream>
using namespace std;

class Base{
    public:
    void vf()
    {
        cout<<"vf\n";
    }
    void pr(){
        cout<<"vb\n";
    }
};

int main() {
    Base* b ;

    //Base * bp = new Base;   //trying to disrupt memory
    char ar[]= "ttttttttttt"; //trying to disrupt memory

    b->pr();
    char aa[]= "ttttttttttt";
    b->vf();
    return 0;
}