从 C++ 中的字符串文字返回 const char*?
Returning const char* from a string literal in C++?
通常,我会从函数中 return 一个 std::string
,因为 returning 一个 const char*
需要调用者提供一个输出内存缓冲区,而那个缓冲区无法调整大小。
但是如果 return 是来自字符串文字的 const char*
有效吗?
const char* generate_c_string() {
return "ABC";
}
这样做(如果有效)可能会更快,因为我不需要动态分配内存来构造 std::string
。
可能是有效的,因为const char* x = "ABC";
是有效的。是否有来自 C++ 标准的参考资料证实其有效性?
这是有效的,string literals,
String literals have static storage duration, and thus exist in memory for the life of the program.
返回的指针将在程序的生命周期内保持有效。
通常,我会从函数中 return 一个 std::string
,因为 returning 一个 const char*
需要调用者提供一个输出内存缓冲区,而那个缓冲区无法调整大小。
但是如果 return 是来自字符串文字的 const char*
有效吗?
const char* generate_c_string() {
return "ABC";
}
这样做(如果有效)可能会更快,因为我不需要动态分配内存来构造 std::string
。
可能是有效的,因为const char* x = "ABC";
是有效的。是否有来自 C++ 标准的参考资料证实其有效性?
这是有效的,string literals,
String literals have static storage duration, and thus exist in memory for the life of the program.
返回的指针将在程序的生命周期内保持有效。