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的指针和内存概念都模糊了 ... ) 展开
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的指针和内存概念都模糊了 ... ) 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询