我只是尝试了一些事情,因为我刚开始使用C ++。我没有得到以下错误声明:
#include <string>
using namespace std;
string& s6(string a) {return a;}
int main() {
string a = "helloo";
s6(a);
return 0;
}
然后我收到以下警告:
Untitled.cpp:4:30: warning: reference to stack memory associated with local variable 'a' returned [-Wreturn-stack-address] string& s6(string a) {return a;} ^ 1 warning generated.
这究竟意味着什么?
答案 0 :(得分:2)
该消息的含义是您正在返回对局部变量的引用,这很糟糕,并且会导致未定义的行为。
局部变量,如在函数内声明的变量,但也是函数的参数,是函数的局部变量,当它们超出范围时(函数返回)被破坏。如果返回对局部变量的引用,则当函数返回时,您将引用一些不再存在的对象。