gpt4 book ai didi

c - valgrind 在使用 libcurl(无 ssl)时检测到内存泄漏

转载 作者:太空狗 更新时间:2023-10-29 15:14:19 29 4
gpt4 key购买 nike

在我的 C 程序中,我使用了 libcurl 的一些基本功能。今天我运行 valgrind 以检查我是否有内存泄漏,而 valgrind 疯狂地报告多个错误。

我基本上追踪到:

CURL *curl;
CURLcode res;

curl = curl_easy_init();
// ...
curl_easy_cleanup(curl);

如果我完全删除使用 libcurl 的代码,valgrind 不会报告任何错误。

我已经读到将 valgrind 与 libcurl 和 ssl 一起使用时会出现一些问题,但我不会获取任何 https url 或类似内容。

我能做什么?我可以让 valgrind 关闭 libcurl 错误(可能是误报吗?)并只报告我的代码中的错误?尽管 libcurl 的最简单用法仍然存在大量错误,但 valgrind 的输出非常困惑。

不幸的是,我没有安装由 libcurl 构建的调试程序,因此 valgrind 甚至不报告检测到泄漏的行号/文件。错误消息如下所示:

==27330== 
==27330== HEAP SUMMARY:
==27330== in use at exit: 34,960 bytes in 2,406 blocks
==27330== total heap usage: 20,130 allocs, 17,724 frees, 2,511,576 bytes allocated
==27330==
==27330== 40 (20 direct, 20 indirect) bytes in 1 blocks are definitely lost in loss record 383 of 445
==27330== at 0x4025BD3: malloc (vg_replace_malloc.c:236)
==27330== by 0x4B173FD: ???
==27330== by 0x4B17A8B: ???
==27330== by 0x4B84957: ???
==27330== by 0x4B849FD: ???
==27330== by 0x4B72814: ???
==27330== by 0x4B734C1: ???
==27330== by 0x4B78DE2: ???
==27330== by 0x4B7524B: ???
==27330== by 0x49B2F76: ???
==27330== by 0x49C9ECB: ???
==27330== by 0x49BC96A: ???
...

最佳答案

如果您从第一个 libcurl 示例 (simple.c) 开始,它们不会调用 curl_global_init(long flags)curl_global_cleanup()最后,valgrind 将报告潜在问题。如 libcurl 文档中所述,您必须同时调用 curl_global_initcurl_global_cleanup。我验证了自己,这解决了问题; valgrind 将报告所有堆 block 已被释放。

关于c - valgrind 在使用 libcurl(无 ssl)时检测到内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7866763/

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