我在我的应用中使用了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
答案 0 :(得分:0)
我注意到在调试模式下,VC会在每个函数中为堆栈添加一些空间。一个函数会短暂地超出边界并覆盖堆栈的几个字节,那么在编译发布之前不会注意到这一点。
您应该进一步检查发布模式的所有库是否正确。 VC知道许多模型的许多库类型(对于DLL,多线程/不,......)。针对调试模式的库检查它们。
这些是我遇到的问题。可能还有其他问题。