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 的调用是否可能会创建一个新列表(不太可能,因为我们可能已经内存不足,但可能)?
答案 0 :(得分:2)
你的怀疑似乎完全正确。可以查看curl_slist_append
的来源{。{3}}。