【发布时间】:2019-10-04 08:33:27
【问题描述】:
我在 libcurl 中找到了 code,它看起来像:
const char *
curl_easy_strerror(CURLcode error)
{
switch(error) {
case CURLE_OK:
return "No error";
case CURLE_UNSUPPORTED_PROTOCOL:
return "Unsupported protocol";
.....
}
据我所知,如果你想返回一个指针,你需要确保指针指向的内存不会被改变或释放。为什么这个 libcurl 代码有效?
【问题讨论】:
-
如果你想返回一个指针,你需要确保在你返回它之后它会指向一个有效的东西。
malloc是一种方法,但不是唯一的方法。 -
指向静态的、全局的或在本例中为文字常量的指针也是有效的。
-
您选择的答案不正确。 @P_J_ 在 cmets 中为您提供了正确答案。
-
谢谢大家,这个问题是重复的。经过这么多有用的讨论,添加答案几乎是明确的。 Sting 文字大部分时间都存储在一个特殊的“只读和静态”区域,当然这取决于平台。并且静态部分是确定的(只读不确定)。