我正在尝试通过它创建一个简单的链表和一个变量。但是,我在一个我认为不会得到的地方遇到了一个段错误。这是我的代码
#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 ++方面不是很有经验,但我认为当堆栈在内存中溢出时会发生段错误。我不知道程序应该在那里耗尽内存。 我很感激找到问题的任何帮助。感谢。
答案 0 :(得分:2)
您创建一个指向Node的指针,但您永远不会创建一个Node-object。
使用
Node* one = new Node();
并且不要忘记程序结束时的delete one;
。
基本上你已经为指向Node
的指针分配了内存,但内容是内存中的一些随机地址。您需要实际创建一个Node对象并将其地址分配给指针。如果没有,您试图取消引用随机地址。 (将其与写int i;
进行比较,int
如果没有初始化,将保留随机zPosition