从 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.

返回的指针将在程序的生命周期内保持有效。