Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我第一次使用 cURL,虽然文档看起来相当完整,但我看不到在哪里可以找到curl_easy_setopt()参数所需的生命周期。
curl_easy_setopt()
这是我的意思的一个例子:
char* str = strdup("my user agent"); curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, str); free(str);
curl_handle调用后有效吗free()?
curl_handle
free()
内容是否str已被复制或是否仍由 curl 某处直接引用?
str
来自官方文档:
作为 'char *' 参数传递给 libcurl 的字符串由库复制;因此,在 curl_easy_setopt() 返回后,与指针参数关联的字符串存储可能会被覆盖。此规则的例外情况在下面的选项详细信息中进行了描述。 在 7.17.0 版本之前,不复制字符串。相反,用户被迫保持它们可用,直到 libcurl 不再需要它们。
作为 'char *' 参数传递给 libcurl 的字符串由库复制;因此,在 curl_easy_setopt() 返回后,与指针参数关联的字符串存储可能会被覆盖。此规则的例外情况在下面的选项详细信息中进行了描述。
在 7.17.0 版本之前,不复制字符串。相反,用户被迫保持它们可用,直到 libcurl 不再需要它们。
因此,如果您使用最新版本的 libcurl,您可以在设置后立即释放字符串。