我试图将一个lambda传递给
这段代码可以编译通过,但是curl会崩溃:
完整示例已经在这里。
CURLOPT_WRITEFUNCTION
。该函数需要一个静态函数,但是我从这个问题中了解到,lambda会被隐式转换,我可以从lambda调用成员函数。auto callback = [](char * ptr_data, size_t size, size_t nmemb, string * writerData)
->size_t
{
if(writerData == NULL)
return 0;
size_t data_size = size * nmemb;
writerData->append(ptr_data, data_size);
return (int)data_size;
};
CURLcode code = curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, callback);
这段代码可以编译通过,但是curl会崩溃:
Segmentation fault: 11
完整示例已经在这里。
CURLOPT_WRITEFUNCTION
之前先调用code = curl_easy_setopt(conn, CURLOPT_WRITEDATA, &buffer);
吗?否则传递给回调函数的指针将没有被设置。 - Jesse Goodcurl_easy_perform
之前设置它们,顺序并不重要。 - Francisco Aguilera