在调用函数【完毕】,在调用栈中还保存了该函数的局部变量吗?该怎么解决
在调用函数【完毕】,在调用栈中还保存了该函数的局部变量吗?
#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的指针吧。
------解决方案--------------------
那是因为你这个程序相对较小
释放的空间暂时还没有被重用,那个数据还没有被覆盖
这么用是有问题的
------解决方案--------------------
------解决方案--------------------
就像你在公厕里拉屎,等你走后,坑里可能仍然是你的屎,可能是别人的屎,可能没有屎
这是不能确信的,因为坑已经不是你的了
#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的指针吧。
------解决方案--------------------
那是因为你这个程序相对较小
释放的空间暂时还没有被重用,那个数据还没有被覆盖
这么用是有问题的
------解决方案--------------------
------解决方案--------------------
就像你在公厕里拉屎,等你走后,坑里可能仍然是你的屎,可能是别人的屎,可能没有屎
这是不能确信的,因为坑已经不是你的了