返回引用局部变量的问题

sky*_*oor -1 c++

可能重复:
返回对局部变量的引用

我碰巧发现这个代码返回5.可以这样写,或者一定要避免?

   int& f() {

     int i = 5; 
     return i;
}

int main(){

    cout<<f()<<endl;    
}
Run Code Online (Sandbox Code Playgroud)

sep*_*p2k 10

如果它有效,它只能偶然起作用.这是未定义的行为,绝对应该避免.

f返回的那一刻,不再能保证i生存的内存会发生什么,以及当你尝试访问它时会发生什么.

  • 同意.+1.您可能还想看看这个:http://stackoverflow.com/questions/1755010/ (2认同)