我試圖從一個函數返回一個字符串,像這樣:返回一個字符串,但得到的垃圾
virtual const char* what() const throw()
{
std::string str = "Name Error: name ";
str+= n_name;
str += " is not defined";
char ret[256]="";
const char* temp = str.c_str();
strcpy(ret, temp);
return ret;
}
但是,當我嘗試打印它在另一個地方:
const char* str= exc.what();
std::cout << str;
輸出是垃圾。
我認爲這個問題是的char [],它應該是char *,但是當我把它改爲
char* ret="";
程序崩潰的
strcpy(ret, temp);
有人可以幫我嗎? P.S.該函數返回一個const char *
您返回指向無效內存的指針。您需要分配一些指針將指向的內存。請參閱'malloc'或'new []'。 – ZunTzu