curl库内存泄漏
Memory leak from curl library
我遇到了问题,下面的代码编译得很好,但当我运行它时,在它输出文件后,我遇到了内存泄漏。
#include <iostream>
#include "includecurlcurl.h"
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "https://api.del.icio.us/dt");
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, true);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2);
curl_easy_setopt(curl, CURLOPT_CAINFO, "C:\Users\bryan\GeoTrustGlobalCA.crt");
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %sn",
curl_easy_strerror(res));
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}
我正在windows vista机器上编译它w/gcc 4.7.0,使用:
g++ -DCURL_STATICLIB testing.cpp -L lib -lcurl -lidn -lwldap32 -lssh2 -lz -lrtm -lcrypto -lgdi32 -lws2_32 -lwinmm -lssl -leay32 -liconv -o testing.exe
知道是什么原因导致了内存泄漏吗?
您应该按照本手册页中的说明尝试调用curl_global_init
。curl_easy_init()会为您调用它,但在某些情况下可能会导致问题。
http://curl.haxx.se/libcurl/c/curl_easy_init.html
也可调用curl_global_cleanup()
。
这个问题是3年前提出的,但问题仍然存在,下面是如何处理这个问题。在curl_global_init
和curl_easy_init
之后仍然有可访问内存,开发人员已经意识到了这一点。但是,由于它没有增长,目前没有理由仅仅为了让valgrind停止抱怨而修复它。
您可以在抑制文件中使用以下位来抑制来自curl的这些错误。
{
<insert_a_suppression_name_here>
Memcheck:Leak
match-leak-kinds: reachable
...
fun:curl_global_init
...
}
{
<insert_a_suppression_name_here>
Memcheck:Leak
match-leak-kinds: reachable
...
fun:curl_easy_init
...
}
然后,您可以像这样使用禁止显示文件:
valgrind --suppressions=my_supp_file.supp my_binary
然后,错误将显示为在您的最终报告中被抑制。例如:
==15518== LEAK SUMMARY:
==15518== definitely lost: 0 bytes in 0 blocks
==15518== indirectly lost: 0 bytes in 0 blocks
==15518== possibly lost: 0 bytes in 0 blocks
==15518== still reachable: 0 bytes in 0 blocks
==15518== suppressed: 328 bytes in 11 blocks
顺便说一句,如果您有其他要抑制的警告,您可以使用valgrind的--gen-suppressions
参数来了解如何抑制它们。有关更多信息,请参阅valgrind的手册页。
相关文章:
- C++功能泄漏内存,我是C++新手,不确定如何解决
- 我的堆栈弹出式磁带的实现是否泄漏内存?
- 将 c++ 向量转换为字符 ** 而不会泄漏内存
- 析构函数 C++ 使泄漏内存
- 构造函数对象赋值是否泄漏内存
- corba :: orb_init泄漏内存
- Gmock泄漏内存
- 如何在不泄漏内存的情况下删除链接列表
- Visual C ODBC关闭记录集泄漏内存
- 为什么泄漏内存比在动态数组上执行 delete[] 慢
- OpenGL正在泄漏内存.哪个对象未释放
- 可以std ::退出泄漏内存
- uiautomation findall泄漏内存
- 为什么在此OpenCL代码中泄漏内存,为什么要泄漏内存
- pthread在完成后会泄漏内存
- win32 标准::线程泄漏内存
- 返回指向同一变量的指针是否会泄漏内存
- 使用clectType(new any_type())可能会泄漏内存泄漏
- Windows开发:如何确定我的应用程序是否正在泄漏内存
- WinHttp打开泄漏内存