cURL在发布模式下崩溃,而不是在调试中崩溃

时间:2015-06-05 16:58:02

标签: c curl release

我在我的应用中使用了cURL。它在调试模式下工作正常(没有错误)。但是,如果我将代码切换到Release版本,应用程序将开始崩溃。我正在使用VC 2013

我的代码:

data_downloads.curl = curl_easy_init();

data_downloads.curlData = (CURL_DOWNLOADED_DATA *)malloc(sizeof(CURL_DOWNLOADED_DATA));
data_downloads.curlData->data = (char *)malloc(sizeof(char));
data_downloads.curlData->data[0] = '\0';

curl_easy_setopt(data_downloads.curl, CURLOPT_WRITEFUNCTION, &my_curl_writeCallback);
curl_easy_setopt(data_downloads.curl, CURLOPT_WRITEDATA, data_downloads->curlData);
curl_easy_setopt(data_downloads.curl, CURLOPT_VERBOSE, 1L); //tell curl to output its progress

curl_easy_setopt(data_downloads.curl, CURLOPT_URL, USER_INFO_URL);
curl_easy_setopt(data_downloads.curl, CURLOPT_COOKIEFILE, "cookie.txt");


curl_easy_perform(data_downloads.curl); //-- it crashes here

1 个答案:

答案 0 :(得分:0)

我注意到在调试模式下,VC会在每个函数中为堆栈添加一些空间。一个函数会短暂地超出边界并覆盖堆栈的几个字节,那么在编译发布之前不会注意到这一点。

您应该进一步检查发布模式的所有库是否正确。 VC知道许多模型的许多库类型(对于DLL,多线程/不,......)。针对调试模式的库检查它们。

这些是我遇到的问题。可能还有其他问题。

相关问题