gpt4 book ai didi

c++ - (c++) 两次调用 curl 方法给出错误

转载 作者:行者123 更新时间:2023-11-28 02:49:30 26 4
gpt4 key购买 nike

我正在开发一个网络服务,在 C++ 中使用 curl 时遇到了一个小问题。以下代码

string WSUser::getUser(int id){
CURL *curl;
CURLcode res;
if(curl == NULL) curl = curl_easy_init();
if(curl) {
ostringstream oss;
curl_easy_setopt(curl, CURLOPT_URL, http://"example.com");
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
res = curl_easy_perform(curl);

curl_easy_cleanup(curl);

if(res != CURLE_OK) return curl_easy_strerror(res);
}

工作正常,但问题是,当我再次调用这个方法时

WSUser *wsUser = new WSUser();
cout << wsUser->getUser(1) << endl;
cout << wsUser->getUser(2) << endl;

然后我得到一个错误:

Unbehandelte Ausnahme bei 0x54ba7e2c (msvcr100d.dll) in WebService.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0xfeeefee8.

最佳答案

这里

CURL *curl;
CURLcode res;
if(curl == NULL) curl = curl_easy_init();

因为您没有初始化 curl,它有一个不确定的值并且使用它(即将它与 NULL 进行比较)是未定义的。
实践中最有可能发生的情况是,您将或多或少地随机调用 curl_easy_init,在 curl 中留下一个随机值。你只是运气不好,第一次调用时碰巧出现了一个零,当时它没有崩溃。

你想要

CURL* curl = curl_easy_init();

关于c++ - (c++) 两次调用 curl 方法给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23384822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com