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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值