我试图序列化我的哈夫曼树到一个文件,但有问题的递归性问题。我没有麻烦打印到控制台使用cout,但当我尝试将其存储在字符串中或写入文件时出现分段错误。通过引用递归函数传递字符串或流对象时C++ segfault
string putData(Node *n, string &s) {
if (n->leaf()) {
s << "[" << n->value() << "]";
} else {
s << ".";
}
if (n->left())
putData(n->left(), s);
if (n->right())
putData(n->right(), s);
}
这与流媒体对象是同一个问题。其实,在程序段错误之后,我检查了这个文件,其内容是否正确。但为什么最后会出现分割?如何停止该程序的分割?
string putData(Node *n, ofstream &s) {
s.open("huffout.txt", ios::app);
if (n->leaf()) {
s << "[" << n->value() << "]";
} else {
s << ".";
}
s.close()
if (n->left())
putData(n->left(), s);
if (n->right())
putData(n->right(), s);
}
+2
你是如何将一个'ofstream&'传递给'string&'的东西? –
+1
您可能需要付出更多努力来自行调试。您是否确定了该程序崩溃的具体内容?你用过gdb来检查那个时候的变量吗?您能否发布展示问题的最简单的完整程序?如果您经历回答这些问题的过程,您可能会自己找到解决方案。 –