我是否需要清理curl_easy_strerror缓冲区?

时间:2013-09-06 09:45:26

标签: c++ c curl libcurl

我在c ++中用curl库API编写了包装器。我试图在c ++中使用if for request / response。有时请求在发送到服务器之前失败,因为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会照顾清理吗?

1 个答案:

答案 0 :(得分:3)

  

我正在设置curl_easy_strerror ...我应该免费(errorBuff)吗?

没有

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

must not free it

[1] const char *pp指向常数字符。你不能改变内容。