我想问一下,从子函数中返回后,子函数中的变量会清除,但我在主函数中调用该子函数时,用一个指针变量将子函数返回的指针保存起来不就行了吗,比如写作char *temp=function();。就像调用一般的带返回值的函数一样。
指针确实还在,但是指针指向的内容已经不在了,这是典型的野指针char * function(void)
{
char a[] = "hello";
……
return a;
}
这里执行*temp=function();temp虽然获取了a的地址,但是a的里面的内容"hello",已经被系统收回。然后执行*temp = ‘a';这样的操作势必会造成内存的意外修改。
解决办法是可以使用全局变量,或者是静态变量,类似于char * function(void)
{
static char a[] = "hello";
……
return a;
}
|