C语言 函数内指针返回后的释放问题

假设有下面的代码:main(){char*a=(char*)malloc(512*sizeof(char));...strcpy(a,foo());...free(a);... 假设有下面的代码:

main () {
char *a = (char *) malloc (512 * sizeof(char));
...
strcpy (a, foo());
...
free (a);
return 0;
}

char * foo () {
char *b = (char *) malloc (32 * sizeof(char));
...
return b;
}

问下这样的情况下,
1. 函数 foo () 中的指针变量 [b] 在函数调用结束后(strcpy处理完成时),会不会被释放掉?
2. 或者必须再建立一个指针 [c] 获取 foo () 的返回值,然后在 strcpy 之后,利用 free (c) 才能释放掉这个内存?

(老摸不需要考虑内存的语言,C的指针和内存概念都模糊了 ... )
展开
 我来答
White_MouseYBZ
2019-08-01 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6656万
展开全部
  1. 不会释放。

  2. 正确。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式