【发布时间】:2012-04-02 17:35:20
【问题描述】:
char* stringReturn()
{
char a[] = "Array of characters";
//return a; // I know stack allocation should not be returned
char *b = "Pointer to a string";
return b; // Is it safe ?
}
int main() {
char *str = stringReturn ();
cout<< str;
return 0; }
这是安全的方法,然后数据“指向字符串的指针”将存储在内存中。
【问题讨论】:
-
请注意,实际上,您正在编写 C 代码,更不用说
std::cout。这有缺点。其中之一是字符串处理相当复杂和危险。 (对于初学者b应该是const char*;试图修改它的调用者会炸毁地球。返回a也将是一场灾难,并且返回一个动态分配的字符数组是维护的噩梦。)你有吗考虑使用std::string?这样做,这些问题就会消失。