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

Ber*_*ard 4 c++ const-char string-literals c++17

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

但是const char*从字符串文字返回一个有效的if?

const char* generate_c_string() {
    return "ABC";
}
Run Code Online (Sandbox Code Playgroud)

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

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

son*_*yao 7

对于字符串文字,这是有效的,

字符串文字具有静态存储持续时间,因此存在于程序生命周期的内存中.

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

  • 这是否涵盖了从生成的库中导入的`generate_c_string`等临界场景,以后会被卸载? (2认同)