C++匿名结构调用失败

Sle*_*idi 1 c++ struct anonymous-types

此代码在运行时失败,而不是在编译时失败.我不是C++专家.有帮助吗?

extern void fn();

int main(int argc, char** argv) {
    fn();
}

void fn()
{
    struct Foo{
        string name;
    }*foo;
    foo->name="sleiman";
    cout<<foo->name<<endl;
}
Run Code Online (Sandbox Code Playgroud)

为什么这段代码在运行时失败,为什么在创建静态实例时它会成功?

void fn()
{
    struct Foo{
        string name;
    }foo;
    foo.name="sleiman";
    cout<<foo.name<<endl;
}
Run Code Online (Sandbox Code Playgroud)

DrY*_*Yap 7

foo是一个指针,但没有初始化,所以当你尝试访问名称时,它正在读取无效的内存.您初始化foo为指向Foo结构的指针但不指示它指向实际对象,因此实际上是一个松散的指针.

为了完成这项工作,您需要使用new关键字或其他方法使指针指向实际对象.