2

我有一个代码,在我curl_easy_setopt用来设置代理 URL 的一个本地函数中。在另一个本地函数中,我调用了curl_easy_perform. 但是当控件从一个函数转移到另一个函数时,使用局部变量设置的代理 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);
}
4

1 回答 1

2

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

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

于 2012-12-03T11:58:55.607 回答