我多次使用
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, msg_out);
在使用curl_easy_cleanup()
函数进行清理之前,在我的代码中。
CURL是否在他的环境中制作msg_out
的内存副本(动态内存)?
答案 0 :(得分:3)
不,默认情况下它不会制作副本,这在CURLOPT_POSTFIELDS
documentation中说明:
指向的数据不会被库复制:因此,它必须由调用应用程序保留,直到关联的传输完成。通过设置CURLOPT_COPYPOSTFIELDS选项,可以更改此行为(因此libcurl会复制数据)。
答案 1 :(得分:0)
如果不这样做,则无关紧要,最后只做curl_easy_cleanup()
,这应该是好的。
很可能它会复制帖子字段,所以在你将它们传递给函数后free()
它们是安全的,否则就不可能保证curl_easy_perform()
的成功,如果我是curl库程序员我会复制它们,因为curl
句柄是一个不透明的结构,我不希望库用户弄乱它,所以复制似乎是正确的选择。