Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CURL下载_进度抛出SIGSEGV_C++_Linux_C++11_Curl_Libcurl - Fatal编程技术网

C++ CURL下载_进度抛出SIGSEGV

C++ CURL下载_进度抛出SIGSEGV,c++,linux,c++11,curl,libcurl,C++,Linux,C++11,Curl,Libcurl,我必须在download_progress中更新进度条值,但每当我试图更新myClass的成员函数时,它总是发送分段错误 这是我的代码: 试图将文件从url下载到文件名,但它一直抛出SIGSEGV 为什么我不能在上面的代码中更新myClass的成员。。。 任何帮助都将不胜感激 谢谢 首先,你需要 &myClass::download_progress 转换为静态函数,并将其简单地调用为: &download_progress 您没有发送要调用的userdata。您的下载方法应

我必须在download_progress中更新进度条值,但每当我试图更新myClass的成员函数时,它总是发送分段错误 这是我的代码:

试图将文件从url下载到文件名,但它一直抛出SIGSEGV 为什么我不能在上面的代码中更新myClass的成员。。。 任何帮助都将不胜感激

谢谢
首先,你需要

&myClass::download_progress
转换为静态函数,并将其简单地调用为:

&download_progress

您没有发送要调用的userdata。您的下载方法应如下所示:

curl_easy_setopt(handle, CURLOPT_PROGRESSFUNCTION, (curl_progress_callback)&myClass::download_progress);
curl_easy_setopt(handle, CURLOPT_PROGRESSDATA, this);
此外,您的下载进度应标记为静态:

class myClass{
    int percent;
    ProgressBar bar;
public:
    int download(const char* url, const char* filename, int enable_progress);
    static int download_progress(void *p, double dl, double dlnow, double ul, double ulnow);

};

类内的静态函数??或globalprogress Bar更新,但它会导致exe崩溃,并引发以下错误:“/root/Desktop/test”中的**错误:malloc:memory corruption fast:0x00007fffd003f411***@Bruno ferreirat问题出在其他地方。
class myClass{
    int percent;
    ProgressBar bar;
public:
    int download(const char* url, const char* filename, int enable_progress);
    static int download_progress(void *p, double dl, double dlnow, double ul, double ulnow);

};