C语言内存回收机制

char *f(){
char buf[5]="abc";
return buf;
}
main(){
char *p;
p=f();
printf("%s",p);
}

------------------------------
如上,f中的char指针buf是不是在退出函数时就应该已经被回收的?这样用会不会有问题?

是已经被回收了,这样用时有问题。应该
char *f(){
char *buf=(char*)malloc(5);
strcpy(buf, "abc");
return buf;
}
用后记得free。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-02-06
buf在栈上,函数结束就释放了。返回栈指针,不可以,笔试常考这个。。
相似回答