我正在学校编写一个简单的家庭作业,并以这种方式获得错误 Segmentation fault(core dumped)在C ++中实现链接列表:
struct Word{
string word;
string meaning;
Word * next;
};
struct dictionary{
Word *head = NULL;
int count;
}dict;
string addWord(string word, string meaning){
Word *newWord = new Word;
newWord -> word = word;
newWord -> meaning = meaning;
newWord -> next = dict.head;
dict.head = newWord;
dict.count++;
}
我正在尝试在收到错误时添加一个单词(节点),我不能使用c ++类,因为是老师的请求,谢谢你的帮助!
答案 0 :(得分:3)
dict.count
永远不会被初始化。鉴于您的编译器可以在struct
定义中包含默认初始化,您应该在int count = 0;
处定义它。这可能不会导致您的段错误,但您仍需要修复它。
我怀疑addWord
未能返回string
,尽管它具有返回值,可能导致您的段错误。这会导致未定义的行为(可能会崩溃)。一个有价值的编译器会给你一个致命的警告,写你编写的代码。将addWord
的返回类型更改为void
。像这样:
void addWord(string word, string meaning)
关于在本网站上发布问题的一般建议:
发布问题时,请包含编译和运行代码所需的所有内容,包括main
方法。从您的代码中删除您认为不重要的任何内容,但您留下的内容仍然应该运行,并且应该证明您的问题。
当你显示不完整的代码时,你就是个傻瓜:如果你知道什么是重要的,你就不需要寻求帮助,是吗?所以你需要发布完整的代码。
当你显示太多代码时,你是不礼貌的。首先将代码缩减到显示问题的最小示例,但保留完整,以便我们可以看到您的真正问题所在。