2012-08-13 63 views
2

我第一次使用cURL,雖然文檔看起來相當完整,但我無法看到在哪裏可以找到curl_easy_setopt()參數所需的使用壽命。什麼是cURL選項參數壽命?

這裏是我的意思的例子:

char* str = strdup("my user agent"); 
curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, str); 
free(str); 

是調用free()curl_handle有效?

是否str內容已被複制,或者它仍然被curl直接引用?

回答

3

From the official docs:

字符串傳遞給libcurl的爲 '字符*' 參數時,由該庫複製;因此與curl_easy_setopt()返回後,可能會覆蓋與指針參數關聯的字符串存儲。以下選項詳細說明了此規則的例外情況。

在版本7.17.0之前,字符串未被複制。相反,用戶被迫保持它們可用,直到libcurl不再需要它們。

因此,如果您使用最新版本的libcurl,可以在設置它之後立即釋放該字符串。

+0

非常感謝您的先生。完美的答案。 – ereOn 2012-08-14 09:29:53

+0

@ereOn不用客氣。 – 2012-08-14 09:40:23

+0

@ereOn也,你不需要那個strdup。 – 2012-08-14 09:41:26