我爲我的代碼中多次使用是否curl_easy_setopt(curl,CURLOPT_POSTFIELDS,msg_out);重複記憶?
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, msg_out);
之前,我米,curl_easy_cleanup()
功能清洗。
CURL是否在他的環境中創建了msg_out
的內存副本(動態內存)?
我爲我的代碼中多次使用是否curl_easy_setopt(curl,CURLOPT_POSTFIELDS,msg_out);重複記憶?
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, msg_out);
之前,我米,curl_easy_cleanup()
功能清洗。
CURL是否在他的環境中創建了msg_out
的內存副本(動態內存)?
不,它不會使默認副本,這是在CURLOPT_POSTFIELDS
documentation說:
的數據指出,不是由庫複製:因此,它必須由被保留調用應用程序直到關聯的傳輸完成。通過設置CURLOPT_COPYPOSTFIELDS選項,可以更改此行爲(所以libcurl會複製數據)。
因此,正如我所料,你可以操縱行爲,雖然**不**默認複製不是我所期望的。 –
如果是的話,是無關緊要的,只是在最後做curl_easy_cleanup()
,它應該是好的。
最有可能它後複製領域,所以將它們傳遞給函數後,它是安全的free()
他們,否則就不可能保證curl_easy_perform()
成功,如果我是一個curl庫程序員,我將它們複製,因爲curl
句柄是一個不透明的結構,我不希望庫用戶搞亂它,所以複製似乎是正確的選擇。
難道這在文檔中很難找到嗎? –