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

在调用函数【完毕】,在调用栈中还保存了该函数的局部变量吗?该怎么解决

2012-03-12 
在调用函数【完毕】,在调用栈中还保存了该函数的局部变量吗?#includeiostreamusing namespace stdint a1

在调用函数【完毕】,在调用栈中还保存了该函数的局部变量吗?
#include<iostream> 
using namespace std;
int a=1;
int* ad()
{
  int a=1000;
  return &a;
}
int main()
{
 1. int *b=ad();
 2. cout<<*b<<endl;
 3. system("pause");return 0;


看这个例子。。输出结果是1000.。
在调用ad()函数后。ad中得局部变量a不是就释放了吗。为什么还可以输出1000? b是一个指向局部变量a的指针吧。

[解决办法]
那是因为你这个程序相对较小
释放的空间暂时还没有被重用,那个数据还没有被覆盖

这么用是有问题的
[解决办法]

探讨

释放的空间暂时还没有被重用是什么意思?是指还没来得急释放局部a的空间。我*b就把它输出了?

[解决办法]
就像你在公厕里拉屎,等你走后,坑里可能仍然是你的屎,可能是别人的屎,可能没有屎
这是不能确信的,因为坑已经不是你的了

热点排行
Bad Request.