首页 新闻 会员 周边

C语言,malloc分配的堆内存做返回值问题

0
悬赏园豆:20 [已解决问题] 解决于 2022-06-28 16:56

例如我们有如下C语言函数

char* return_str() {
    char* retVal = (char*) malloc(sizeof(char) * N);
    // do something
    return retVal;
}

int main(void) {
    char* str = return_str();
    // do something
    return 0;
}

问题是:在函数return_str() 中创建的堆内存 retVal 能否作为返回值?如果能的话,那么在哪里释放这块内存?在main函数中free(str) 吗?

飞鸟_Asuka的主页 飞鸟_Asuka | 菜鸟二级 | 园豆:209
提问于:2022-05-09 09:45
< >
分享
最佳答案
0

能,在你用的时候,用完就可以手动free了

收获园豆:20
不知道风往哪儿吹 | 老鸟四级 |园豆:2035 | 2022-05-09 09:56

所以是调用方去free这个指针吗

飞鸟_Asuka | 园豆:209 (菜鸟二级) | 2022-05-09 09:59

@飞鸟_Asuka: 是的

不知道风往哪儿吹 | 园豆:2035 (老鸟四级) | 2022-05-09 10:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册