munmap_chunk():递归函数中的无效指针:0x00007fffbef49d90

时间:2013-10-31 02:15:47

标签: c++ pointers recursion

我是编程的新手,所以即使在尝试谷歌这个错误之后,我找不到任何与我的项目相关的内容,或者对我来说很简单。

我必须创建一个迭代地反转字符串的函数,然后是递归执行的另一个函数。迭代函数完全正常:

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;

然而,当我试图使其递归时,我得到了无效的指针错误。我复制了我正在使用的主要测试和其他功能: 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);
    }
}

是否有人对可能导致此错误的原因有任何提示?根据我的阅读,大多数人在尝试删除内容时都会遇到此错误,但我似乎没有删除此程序中的任何内容......

注意:我们必须通过连接子串而不是使用数组来实现这一点,因为我们还没有深入介绍数组。

1 个答案:

答案 0 :(得分:1)

你忘了回来:

        reverse_rec(str_input, result += str_input.substr(input_length,1), --input_length);
  ^^^^^

编译器很容易发现这些错误。你应该启用警告。