首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

这两个简单程序如何运行不一样

2013-09-17 
这两个简单程序怎么运行不一样?局部变量[解决办法]第一: int* xfun()编译错误,fun()的返回值是void*第二

这两个简单程序怎么运行不一样?

                                                  局部变量                                              
[解决办法]
第一:
 int* x=fun();
编译错误,fun()的返回值是void*

第二:
返回临时变量的地址,本来就是错误的。
两次结果不一样,因为调用printf函数,使得栈上x地址的内容被改写了。

结论,不要去纠结为啥结果不一样,本来就是错的。即使程序2看起来结果正确,也是错的。

[解决办法]

答案正确只是内存还没擦除而已!但是结果是无法保证的,
返回局部变量地址本来就是很不安全,甚至可以说是一个错误的动作!
所以不要为这个问题伤脑筋了!

[解决办法]
函数返回后,临时变量内存空间就被释放了,之后内容随机,无意义

热点排行