轨迹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都没有初始化,所以是一个随机值。不能依赖变量回收释放。

    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置