可能重复:
可以在其范围之外访问局部变量的内存吗?
#include <iostream>
double *foo(){
double *varFoo = new double;
double temp = 8762;
varFoo = &temp;
return varFoo;
}
int main(void){
double *newVar = foo();
std::cout<<*newVar<<std::endl;
std::cin.get();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我知道指针varFoo将在堆中创建,因此将保持在那里直到我调用delete,但是在函数foo中的temp变量呢?
它是一个局部变量,一旦foo函数的调用结束,临时变量的值将被存储的地址将被释放吗?
那么为什么我得到8762而不是垃圾呢?
谢谢