我正在尝试编写一个类以使用 cURL 从 C++ 网站获取一些数据。这是该类的一个示例(有一个 Curl* curl_ 数据成员, rawData_ 是一个字符串)。这段摘自实现文件,所有函数都在头文件中声明。
MyClass::MyClass()
{
curl_global_init(CURL_GLOBAL_ALL);
curl_ = curl_easy_init();
curl_easy_setopt(curl_, CURLOPT_URL,
"http://www.google.com");
curl_easy_setopt(curl_, CURLOPT_WRITEFUNCTION, &MyClass::writeCallback);
}
MyClass::~MyClass()
{
curl_easy_cleanup(curl_);
curl_global_cleanup();
}
size_t MyClass::writeCallback(char* buf, size_t size, size_t nmemb, void* up)
{
//buf is a pointer to the data that curl has for us
//size*nmemb is the size of the buffer
for (size_t c = 0; c<size*nmemb; ++c)
{
cerr << c << endl;
rawData_.push_back(buf[c]);
}
return size*nmemb; //tell curl how many bytes we handled
}
void MyClass::makeCall()
{
curl_easy_perform(curl_);
}
当我创建 MyClass 的实例并调用 makeCall 时,writeCallBack 函数中有一个段错误。也就是说,buf 的大小似乎为 0(当 c = 0 时,它在 buf[c] 的调用中中断)。任何帮助表示赞赏