我有以下代码片段:

struct Node
{
    Node* left;
    Node* right;
    string data;
};

void test()
    {
        Node thing;
        thing.data = "h";
        thing.left = NULL;
        thing.right = NULL;

        cout<< "Thing data = " << thing.data << endl;

        Node* thing2;
        thing2->data = "f";
        thing2->left = NULL;
        thing2->right = NULL;

        cout<< "Thing2 data = " << thing2->data << endl;

    }


我遇到的问题是,thing2-> data =“ f”在运行时产生分段错误。我已经通过GDB运行该程序并收到此错误,但是我无法弄清楚它的含义:


  读取共享库的符号++。做完了
  事物数据= h
  
  节目接收信号
  EXC_BAD_ACCESS,无法访问
  记忆。原因:13地址:
  0x0000000000000000 0x00007fff874d59a3
  在std :: string :: assign()中


任何帮助都会很棒。谢谢!

最佳答案

Thing2是一个未初始化的指针。
它没有指向有效的Node对象。

您应该分配它:

thing2 = new Node;


或使其指向有效的Node对象:

thing2 = & thing;

07-25 21:19