C ++中的警告语句(初学者)

时间:2015-09-25 11:42:15

标签: c++ warnings

我只是尝试了一些事情,因为我刚开始使用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.

这究竟意味着什么?

1 个答案:

答案 0 :(得分:2)

该消息的含义是您正在返回对局部变量的引用,这很糟糕,并且会导致未定义的行为

局部变量,如在函数内声明的变量,但也是函数的参数,是函数的局部变量,当它们超出范围时(函数返回)被破坏。如果返回对局部变量的引用,则当函数返回时,您将引用一些不再存在的对象。