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

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

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