我第一次使用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直接引用该内容?
答案 0 :(得分:4)
作为'char *'参数传递给libcurl的字符串由库复制;因此,curl_easy_setopt()返回后,可能会覆盖与指针参数关联的字符串存储。此规则的例外情况在下面的选项详细信息中进行了描述。
在7.17.0版之前,未复制字符串。相反,用户被迫保持可用状态,直到libcurl不再需要它们为止。
因此,如果您使用最新版本的libcurl,则可以在设置后立即释放该字符串。