从C ++中的字符串文字返回const char *? [重复]

问题描述 投票:4回答:1

这个问题在这里已有答案:

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

但是如果从字符串文字中返回一个有效的const char*

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

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

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

c++ c++17 string-literals const-char
1个回答
6
投票

这对string literals有效,

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

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

© www.soinside.com 2019 - 2024. All rights reserved.