2013-10-08 125 views
0

我试图将字符串附加到另一个字符串,并且我遇到了seg错误,似乎无法弄清楚我做错了什么。尝试附加字符串时发生Seg错误

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线反之亦然。这可能是我错过了一些很痛苦的事情,但是有人可以解释如何正确地做到这一点,并解释我做错了什么?

+0

malloc后没有终止电流。 – zubergu

回答

1

current分配current不是“\ 0” malloc后终止
strcat正在寻找这个人物知道在哪里追加和段错误这样

您之前的初始化currentmalloc返回后没有任何意义,它指向未初始化内存的完全不同的部分。
无法确定,但从您提供的内容来看,我的提示是使用realloc扩展current的大小。

1

malloc你忘了与以前current内容来填充新分配的字符串后 - 你不能这样做,因为你已经失去了对它的引用(进一步,你introudcing内存泄漏,因为你没有释放。它 尝试realloc代替 - 但先用malloc

相关问题