C: 从另一个函数中释放指针



比方说,我有两个类似的函数-

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);

无论您手动分配什么(例如:malloc、calloc等),都必须手动释放。。

在函数f1中,必须释放函数f2的返回指针,否则将出现内存泄漏

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

此外,您还必须释放函数f1 返回的指针

char *reply = f1();
printf("reply = %s", reply );
free( reply );

相关内容

  • 没有找到相关文章

最新更新