我試圖序列化我的哈夫曼樹到一個文件,但有問題的遞歸性問題。我沒有麻煩打印到控制檯使用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);
}
你是如何將一個'ofstream&'傳遞給'string&'的東西? – chris
您可能需要付出更多努力來自行調試。您是否確定了該程序崩潰的具體內容?你用過gdb來檢查那個時候的變量嗎?您能否發佈展示問題的最簡單的完整程序?如果您經歷回答這些問題的過程,您可能會自己找到解決方案。 –