0
我是編程新手,所以即使在嘗試谷歌這個錯誤後,我找不到任何與我的項目相關的東西,或者足夠簡單, 。munmap_chunk():無效指針:遞歸函數中的0x00007fffbef49d90
我必須做一個迭代地反轉字符串的函數,然後遞歸地做另一個函數。迭代函數工作得很好:
string reverse(string str_input) {
string result = ""; //initialize a blank string to hold reversed string
for(int i = (str_input.length() - 1); i >= 0; i--) {
result += str_input.substr(i,1); //concatenates the string backwards
}
return result;
但是,當我試圖讓它遞歸時,我得到了一個無效的指針錯誤。我已經複製了我用於測試的main和這裏的其他函數: string reverse_rec(string str_input,string result,int input_length);
int main() {
string str_input = "hello";
int input_length = (str_input.length() - 1);
string result = "";
cout<< reverse_rec(str_input, result, input_length) << endl;
return 0;
}
string reverse_rec(string str_input, string result, int input_length) {
if(input_length <= 0) {
return result;
} else {
reverse_rec(str_input, result += str_input.substr(input_length,1), --input_length);
}
}
有沒有人有任何提示,以什麼可能會導致此錯誤?從我讀過的內容來看,大多數人在嘗試刪除東西時遇到了這個錯誤,但我似乎並沒有在這個程序中刪除任何內容......
注意:我們必須通過連接子串而不是使用數組,因爲我們尚未深入討論數組。
從我可以告訴,這不會工作。您試圖在原地修改字符串。看着其他的實現,他們要麼使用迭代器或指針算術。考慮重新考慮你的方法。 – 2013-10-31 02:38:03