2

1 つのローカル関数でcurl_easy_setoptプロキシ URL を設定するために使用するコードがあります。そして、別のローカル関数で を呼び出しますcurl_easy_perform。しかし、コントロールが 1 つの関数から別の関数に移動すると、ローカル変数を使用して設定されたプロキシ 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 man ページの次のセクションが影響する可能性があります。

バージョン 7.17.0 より前では、文字列はコピーされませんでした。代わりに、libcurl がそれらを必要としなくなるまで、ユーザーはそれらを利用可能にしておくことを余儀なくされました。

于 2012-12-03T11:58:55.607 に答える