可能重复:
Can a local variable's memory be accessed outside its scope?返回局部变量的地址是坏的,那么为什么这个代码工作
返回函数内部变量的地址是不好的,因为这个变量将不再如果变量所属的堆栈帧结束,则存在 。
那么,为什么这个代码工作正常
int* test(){
int a = 11;
return &a;
}
int main(){
int *a;
a = test();
cout << *a;
return 0;
}
所以我应该避免这样做? – user1393669 2012-08-08 18:07:41
@ user1393669不仅可以避免。你应该明确不这样做。 – 2012-08-08 18:08:11
@ user1393669未定义的行为是编译器/机器特定的。它可能在您的机器上正常工作,但可能会崩溃在其他人的机器上。 – gcochard 2012-08-08 18:08:34