在构造函数中使用curl_easy_init会导致segfault

Using curl_easy_init in the constructor leads to segfault

本文关键字:init segfault easy curl 构造函数      更新时间:2023-10-16

当我在类中包装libcurl时,我面临的问题是:

Foo::Foo()
{
    curl = curl_easy_init();
    if (!curl)
        throw std::runtime("Can't initialize libcurl");
}
char* Foo::GetPage(char *url)
{
    curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
    curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, WriteData );
    curl_easy_setopt( curl, CURLOPT_WRITEDATA, (void *)data);
    CURLcode res = curl_easy_perform( curl );
}

我在GetPage函数的第一行得到了一个segfault(设置url)。如果我在GetPage中初始化curl,一切都好。还有人面临类似的问题吗?

变量正在失去其作用域。当curl变量进入GetPage函数时,请检查其值。