返回ref时是否为未定义的行为。到一个局部变量?

时间:2012-05-18 08:25:50

标签: c++ reference undefined-behavior

  

可能重复:
  Returning the address of local or temporary variable
  Can a local variable's memory be accessed outside its scope?
  return reference to local variable

返回ref时是否为未定义的行为。到一个局部变量?

http://ideone.com/Kz381

int & func(){

        int x = 10;
        return x;

}

int main() {

        int &y = func();
        cout << y << endl;

}

2 个答案:

答案 0 :(得分:7)

是的。当函数结束时,变量不再可用。

你不幸的是它似乎有效。问题是,内存未被清除,因此10仍然存在,但它可以随时回收,所以它绝对不安全。

答案 1 :(得分:5)

如果你想获得技术,返回它不是未定义的行为。当您尝试使用返回的内容时,您只会获得未定义的行为。