拜托,你能告诉我我是否以正确的方式在我的功能中使用免费?我用 valgrind 检查了我的代码,没有发生错误。
void strconcat (char **str1, const char *str2) {
unsigned long str1len = strlen(*str1);
unsigned long str2len = strlen(str2);
char *tempStr = malloc(sizeof(char) * (str1len + str2len + 1));
memcpy(tempStr, *str1, str1len);
memcpy(&(tempStr[str1len]), str2, (str2len + 1));
free(*str1);
*str1 = tempStr;
}
在主函数中,我以这种方式调用我的函数:
int main() {
char *str1 = malloc(25);
str1 = strcpy(str1, "First part of the string");
char *str2 = malloc(16);
str2 = strcpy(str2, " - second part.");
printf("%s\n", str2);
strconcat(&str1, str2);
printf("%s\n", str1);
free(str1);
free(str2);
return EXIT_SUCCESS;
}
谢谢您的帮助!