轨迹12 2017-05-16 14:46 采纳率: 0%
浏览 1383

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

小白今天学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条回答 默认 最新

  • oyljerry 2017-05-16 15:27
    关注

    你的n都没有初始化,所以是一个随机值。不能依赖变量回收释放。

    评论

报告相同问题?

悬赏问题

  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向