0

我正在尝试将一个字符串附加到另一个字符串,但我遇到了一个段错误,似乎无法弄清楚我做错了什么。

typedef char * String;
String function(String str) {
    // Some variables here
    String current = "";
    String ch = "";

    //More code here
    while() {
        if() {
            current = malloc(strlen(current) + strlen(ch) + 1);
            strcat(current, ch);
        }
     ...
     }
}

即使注释掉了行,我仍然会遇到段错误strcat,反之亦然malloc。这可能是我错过的痛苦显而易见的事情,但是有人可以解释如何正确地做到这一点,并解释我做错了什么吗?

4

2 回答 2

0

在你malloc忘记用以前的current内容填充新分配的字符串之后 - 你不能这样做,因为你已经失去了对它的引用(此外,你正在引入内存泄漏,因为你没有释放它。尝试realloc改为 - 但是current首先分配malloc

于 2013-10-08T23:22:47.103 回答
0

current不是在 '\0' 之后终止malloc
strcat正在搜索此字符以了解在何处追加和执行此操作的段错误。

您之前的初始化在返回current后没有任何意义malloc,它指向完全不同的未初始化内存部分。
不能确定,但​​根据您提供的提示,我的提示是用于realloc扩展current.

于 2013-10-08T23:24:29.097 回答