【问题标题】:Do i required to cleanup the curl_easy_strerror buffer?我需要清理 curl_easy_strerror 缓冲区吗?
【发布时间】:2013-09-10 09:02:40
【问题描述】:

我在 c++ 中为 curl 库 API 编写了包装器。我正在尝试在 c++ 中将 if 用于请求/响应。有时请求在发送到服务器之前失败,因为 curl api 返回一些 strerror。我正在将该字符串错误传输到我的应用程序。我需要清理它吗?

我的代码如下,

int HttpClientImplCurl::get(void*& aOutBuf, base::Size& aOutSize,void*& aOutRecvHeaderBuf, base::Size& aOutRecvHeaderSize, const char*& errorBuff)
{
        HttpClientImplCurlCleaner    lCleaner(this); // Cleans up when it goes out of context
        struct curl_slist*          lHeaders = NULL;

        // setup get
        CURLcode lCode = curl_easy_setopt(curlHandle, CURLOPT_URL,
                                          aInClient.getUrl().getBuffer());

        if (lCode != 0) {
            errorBuff = curl_easy_strerror(lCode);
            return lCode;
        }

}

我正在我的析构函数中执行 curl_easy_cleanup(curlHandle)。

在这里,我将 curl_easy_strerror 设置为我的 const char*& errorBuff。我在应用程序中使用。我应该做一个免费的(errorBuff)吗?

或任何 curl 库 api,我需要使用它来清理类似于

struct curl_slist*          lHeaders = NULL;
 lHeaders = curl_slist_append(lHeaders,lMultiHeader.getBuffer());
 curl_slist_free_all(lHeaders);?

或者它不需要并且 curl_easy_cleanup 会负责清理?

【问题讨论】:

    标签: c++ c curl libcurl


    【解决方案1】:

    我正在设置 curl_easy_strerror... 我应该做一个 free(errorBuff) 吗?

    没有。

    curl_easy_strerror 函数使用string literal 保存错误字符串,该字符串作为const char * 指针[1] 返回。

    must not free it

    [1] 与const char *pp 指向常量字符。您无法更改内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-25
      • 2023-03-16
      • 2017-12-09
      • 2017-04-21
      • 2021-12-19
      • 1970-01-01
      • 2019-01-02
      • 2021-06-05
      相关资源
      最近更新 更多