尝试追加字符串时出现Seg Fault

时间:2013-10-08 23:16:24

标签: c

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

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行。这可能是一件非常明显的事情,我很遗憾,但有人可以解释一下如何正确地做到这一点,并解释我做错了什么?

2 个答案:

答案 0 :(得分:1)

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

分配malloc

答案 1 :(得分:1)

current之后

malloc不是'\ 0'终止 strcat正在搜索此字符以了解附加位置和段错误
current返回后,您先前的malloc初始化没有意义,它指向未初始化内存的完全不同的部分。
无法确定,但根据您提供的建议,我的提示是使用realloc扩展current的大小。