什么是cURL选项参数的生命周期?

时间:2012-08-13 20:58:46

标签: c curl

我第一次使用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直接引用该内容?

1 个答案:

答案 0 :(得分:4)

From the official docs:

  

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

     

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

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