php 递归函数 segfault,通过引用递归函数传递字符串或流对象时C++ segfault

博主在尝试将哈夫曼树序列化到文件时遇到了递归函数导致的分段错误。尽管能正确输出到控制台,但在尝试将内容写入字符串或文件时出现问题。代码中展示了两个版本的递归函数,一个是将内容追加到字符串,另一个是写入ofstream对象。尽管文件内容看起来是正确的,但程序在结束时仍然崩溃。建议使用调试工具如gdb来定位问题,并提供更详细的代码以供分析。
摘要由CSDN通过智能技术生成

我试图序列化我的哈夫曼树到一个文件,但有问题的递归性问题。我没有麻烦打印到控制台使用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来检查那个时候的变量吗?您能否发布展示问题的最简单的完整程序?如果您经历回答这些问题的过程,您可能会自己找到解决方案。 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值