u013587290
轨迹12
2017-05-16 14:46

关于函数内存栈的释放问题

  • 局部变量、释放、栈

小白今天学C++,看到这么一个例子,有些不懂,恳请各位大牛解惑。
源码如下:
#include
int f1();
int f2();
int main()
{
f1();
cout<<f2()<<endl;
return 0;
}
int f1()
{
int m=12345;
return m;
}
int f2()
{
int n;
return n;
}
书上的运行结果如下:12345
书上的解释是:在返回到main()函数后,f1()和f2()的局部变量和形参都消失,但对应内存中的内容还存在,这就是输出12345的原因。
可是我试了一下,实际输出结果为:-858993460
我现在不知道到底哪个才是对的了,到底是局部变量被存在栈里,用完了后;是变量和变量的内容都消失了?还是只是消失这个变量名,而实际内容不消失呢?到底书上的结果和解释是对的,还是实际错了呢?

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

2条回答

为你推荐

换一换