为什么从函数返回一个const char *不是一个好主意?

时间:2015-07-15 04:30:29

标签: c++ string return-value c-strings

这是关于从函数返回const char *的another question

但我已经尝试使用以下代码,看起来一切正常。

#include <iostream>
#include <string>

using namespace std;

const char * tocstring(){
    string str = "abcd";
    return str.c_str();
}

int main(){
    const char * p = tocstring();
    cout << p << endl;
    return 0;
}

它将输出abcd作为我想要的。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

const char * tocstring(){                                                                         
    string str = "abcd";                                                                        
    return str.c_str();                                                                          
}

这里str是一个局部变量。一旦它超出范围,你就不应该再指出它了。这是一个UB。