是libcurl示例httpcustomheader.c buggy(显示不好的做法)还是我错过了什么?

时间:2015-08-05 08:59:47

标签: c++ c libcurl

libcurl示例包含example for custom HTTP headers

该示例使用 curl_slist_append ,如下所示:

struct curl_slist *chunk = NULL;

/* Remove a header curl would otherwise add by itself */ 
chunk = curl_slist_append(chunk, "Accept:");

/* Add a custom header */ 
chunk = curl_slist_append(chunk, "Another: yes");

/* Modify a header curl otherwise adds differently */ 
chunk = curl_slist_append(chunk, "Host: example.com");

/* Add a header with "blank" contents to the right of the colon. Note that
   we're then using a semicolon in the string we pass to curl! */ 
chunk = curl_slist_append(chunk, "X-silly-header;");

根据documentation of curl_slist_append,如果出现错误,将返回空指针:

  

返回值

     

如果出现任何错误,则返回空指针,否则返回新指针   返回列表指针。

问题:

例如致电

chunk = curl_slist_append(chunk, "Another: yes");

失败了,原先的列表,以前指出的那个块,不会丢失吗?结果是:这不会泄漏内存吗? 或者是否有一些我缺少的魔法并且 curl_slist_append 文档中没有提到它?

更糟糕的是:下次对 curl_slist_append 的调用是否可能会创建一个新列表(不太可能,因为我们可能已经内存不足,但可能)?

1 个答案:

答案 0 :(得分:2)

你的怀疑似乎完全正确。可以查看curl_slist_append的来源{。{3}}。