libCurl:一个方法中的curl_easy_setopt和另一个方法中的curl_easy_perform不起作用

时间:2012-12-03 11:32:27

标签: libcurl

我有一个代码,在一个本地函数中,我使用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);
}

1 个答案:

答案 0 :(得分:2)

这意味着您使用的是相当旧的libcurl版本,curl_easy_setopt手册页中的以下部分可能会对您产生影响:

  

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