C++ - 创建链表时出现段错误

C++ - Getting segfault while creating a Linked List

本文关键字:段错误 错误 创建 链表 C++      更新时间:2023-10-16

我正在尝试创建一个简单的链表和一个变量 t 通过它读取。但是,我在一个我认为不会得到的地方遇到了段错误。这是我的代码

    #include <iostream>
    #include <string>
    using namespace std;
    struct Node {
     string name;
     Node *next;
    };
    int main() {
     Node *one;
     one->name = "one";
     Node *two;
     two->name = "two";
     Node *three;
     three->name = "three";
     Node *reader = one;
     while (reader != NULL) {
      cout << reader->name << endl;
      reader = reader->next;
     }
    }

我在代码周围添加了一些 cout,并意识到段错误发生在之后

    one->name = "one";

我在C++方面不是很有经验,但我认为当堆栈在内存中溢出时会发生段错误。我不明白程序应该如何耗尽那里的内存。我将不胜感激任何帮助找出问题。谢谢。

你创建了一个指向 Node 的指针,但你永远不会创建一个 Node-object。

Node* one = new Node();

不要忘记delete one;在您的程序结束时。

基本上你已经为指向Node的指针分配了内存,但内容是内存中的一些随机地址。您需要实际创建一个 Node-对象并将其地址分配给您的指针。如果没有,则您正在尝试取消引用随机地址。(将其与编写int i;进行比较,如果未初始化,它将保持随机int