我有两个功能-

char* f2(void){
    char* str = malloc(100);
    strcpy(str, "string1");
    return str;
}

char* f1(void){
    char* reply = malloc(150);
    strcpy(reply, "string = ");
    strcat(reply, f2());
    return reply;
}

我是这么叫梅因的-
printf("reply = %s", f1());

我的问题是:
我单独释放(回复)就足够了吗?还是必须在f1()中显式释放(str)?

最佳答案

您还必须释放f1()的返回值。改变

strcat(reply, f2());

致:
char *str = f2();
strcat(reply, str);
free(str);

关于c - C:从另一个函数释放指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26099909/

10-14 18:39