-3

可能重复:
返回局部变量或临时变量的地址
局部变量的内存是否可以在其范围之外访问?
返回对局部变量的引用

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

http://ideone.com/Kz381

int & func(){

        int x = 10;
        return x;

}

int main() {

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

}
4

2 回答 2

7

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

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

于 2012-05-18T08:27:30.813 回答
5

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

于 2012-05-18T08:36:03.227 回答