#include <iostream>
using namespace std;
int* foo()
{
int i = 100 ;
int *p = &i;
return p ;
}
int main()
{
cout<<*foo()<<endl;
system("pause");
}这段代码为什么可以正常执行,我的int不是在栈上面定义的吗,按理说foo方法执行完毕之后i就会被销毁了,但是为什么还可以通过指针访问它呢,很不解。
using namespace std;
int* foo()
{
int i = 100 ;
int *p = &i;
return p ;
}
int main()
{
cout<<*foo()<<endl;
system("pause");
}这段代码为什么可以正常执行,我的int不是在栈上面定义的吗,按理说foo方法执行完毕之后i就会被销毁了,但是为什么还可以通过指针访问它呢,很不解。
=============
理论上i是收回了,但是, i所占的那块空间很可能没有马上被占用,所以你通过指针还可以访问到它,不过,上面那段代码的结果是不确实的。