这两个简单程序如何运行不一样
这两个简单程序怎么运行不一样?局部变量[解决办法]第一: int* xfun()编译错误,fun()的返回值是void*第二
这两个简单程序怎么运行不一样?
局部变量
[解决办法]第一:
int* x=fun();
编译错误,fun()的返回值是void*
第二:
返回临时变量的地址,本来就是错误的。
两次结果不一样,因为调用printf函数,使得栈上x地址的内容被改写了。
结论,不要去纠结为啥结果不一样,本来就是错的。即使程序2看起来结果正确,也是错的。
[解决办法]答案正确只是内存还没擦除而已!但是结果是无法保证的,
返回局部变量地址本来就是很不安全,甚至可以说是一个错误的动作!
所以不要为这个问题伤脑筋了!
[解决办法]函数返回后,临时变量内存空间就被释放了,之后内容随机,无意义