2

我第一次使用 cURL,虽然文档看起来相当完整,但我看不到在哪里可以找到curl_easy_setopt()参数所需的生命周期。

这是我的意思的一个例子:

char* str = strdup("my user agent");
curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, str);
free(str);

curl_handle调用后有效吗free()

内容是否str已被复制或是否仍由 curl 某处直接引用?

4

1 回答 1

5

来自官方文档:

作为 'char *' 参数传递给 libcurl 的字符串由库复制;因此,在 curl_easy_setopt() 返回后,与指针参数关联的字符串存储可能会被覆盖。此规则的例外情况在下面的选项详细信息中进行了描述。

在 7.17.0 版本之前,不复制字符串。相反,用户被迫保持它们可用,直到 libcurl 不再需要它们。

因此,如果您使用最新版本的 libcurl,您可以在设置后立即释放字符串。

于 2012-08-13T21:02:35.323 回答