读书人

在调用函数【完毕】,在调用栈中还保存

发布时间: 2012-03-12 12:45:33 作者: rapoo

在调用函数【完毕】,在调用栈中还保存了该函数的局部变量吗?
#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就把它输出了?

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

读书人网 >C语言

热点推荐