从C ++中的字符串文字返回const char *?

时间:2017-12-20 05:07:55

标签: c++ c++17 string-literals const-char

通常,我会从函数返回std::string,因为返回const char*会要求调用者提供输出内存缓冲区,并且该缓冲区不可调整大小。

但是如果它来自字符串文字,则返回const char*有效吗?

const char* generate_c_string() {
    return "ABC";
}

这样做(如果有效)可能会更快,因为我不需要动态分配内存来构建std::string

它可能有效,因为const char* x = "ABC";有效。是否有来自C ++标准的参考资料证实其有效性?

1 个答案:

答案 0 :(得分:6)

这适用于string literals

  

字符串文字有static storage duration,因此存在于程序生命周期的内存中。

返回的指针在程序的生命周期内仍然有效。