我有一个代码,在一个本地函数中,我使用curl_easy_setopt
来设置代理URL。在另一个本地函数中,我调用curl_easy_perform
。但是当te控件从一个函数移动到另一个函数时,使用局部变量设置的代理URL包含垃圾字符,DNS查询返回错误。 libcurl帮助页面说当我们执行setopt时,curl库会复制字符串值。但我觉得图书馆只要需要它就会引用这个价值。它不会复制字符串。因此,如果使用局部变量来设置代理URL,则在我调用curl_easy_perform
时它将包含垃圾。
以下是示例代码段。
void funcSetOpt
{
char ProxyUrl[] = "someproxy";
curl_easy_setopt(curlHandle, CURLOPT_PROXY, ProxyUrl);
}
void funcPerform
{
curl_easy_perform(curlHandle);
}
答案 0 :(得分:2)
这意味着您使用的是相当旧的libcurl版本,curl_easy_setopt手册页中的以下部分可能会对您产生影响:
在7.17.0版之前,未复制字符串。相反,用户是 强制让它们保持可用,直到libcurl不再需要它们为止。