7

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

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

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

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

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

4

1 回答 1

12

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

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

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

于 2017-12-20T05:13:32.920 回答