我正在尝试将一个字符串追加到另一个字符串中,我遇到了一个段错误,似乎无法弄清楚我做错了什么。
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 :(得分:1)
在malloc
忘记用以前的current
内容填充新分配的字符串之后 - 你不能这样做,因为你丢失了对它的引用(此外,你正在引用一个内存泄漏,因为你没有释放它。
请尝试使用realloc
- 但首先使用current
malloc
答案 1 :(得分:1)
current
之后 malloc
不是'\ 0'终止
strcat
正在搜索此字符以了解附加位置和段错误
在current
返回后,您先前的malloc
初始化没有意义,它指向未初始化内存的完全不同的部分。
无法确定,但根据您提供的建议,我的提示是使用realloc
扩展current
的大小。