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

2024-01-06

在我的 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) http://curl.haxx.se/libcurl/c/curl_global_init.html and curl_global_cleanup() http://curl.haxx.se/libcurl/c/curl_global_cleanup.html最后,valgrind 将报告潜在的问题。正如 libcurl 文档中所述,您必须调用两者curl_global_init and curl_global_cleanup。我验证了自己这解决了问题; valgrind 将报告所有堆块均已释放。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

valgrind 在使用 libcurl 时检测内存泄漏(无 ssl) 的相关文章

随机推荐

  • Scala:删除最后一次出现的字符

    我正在尝试删除字符串中最后一次出现的字符 我可以得到它的index str lastIndexOf 我已经尝试过使用split和replace字符串上的函数 你可以使用patch scala gt val s s dfkj w erw s
  • Javascript for...of 在 Safari 中不起作用

    目前 我正在尝试构建一个简单的侧面导航 只要单击 toggleSidenav 按钮之一 有多个 该导航就会出现 消失 在使用 Firefox 和 Chrome 进行测试时 它似乎工作正常 但今天当我尝试使用 Safari 桌面版和移动版 打
  • Docker 组合 |虚拟主机

    我的代码有什么问题吗 提前致谢 我正在尝试为我的 docker 容器设置虚拟主机 在 localhost 8000 上工作正常 但是当我尝试通过 http borgesmelo local 访问时 出现错误 ERR NAME NOT RES
  • OpenGL 中的恒定游戏速度与 GLUT 中的可变 FPS 无关?

    我一直在读科恩 维特斯详细文章 http www koonsolo com news dewitters gameloop 关于不同的游戏循环解决方案 但我在使用 GLUT 实现最后一个解决方案时遇到了一些问题 这是推荐的解决方案 在阅读了
  • 如何编写 CSS 选择器来选择不具有特定属性的元素?

    如何编写 CSS 选择器来选择不具有特定属性的元素 我有2个 div 节点如下 First div class weEq5 div div
  • Chrome 时间线 - 如何确定“重新计算样式”日志条目的原因?

    使用 Chrome 中的内置时间线记录器分析页面时 我看到重复的 重新计算样式 条目 它们没有明显的信息将它们链接到 DOM 元素或事件 我怎样才能最好地确定这些条目的原因 已发布的用于调查的 jQuery 版本的替代方案是控制台中的简单一
  • 为什么会出现 TypeError: 'str' object不能被解释为整数?

    我正在做OrderedDict的练习 我正在尝试使用 input rsplit 方法为字典分配值 发生了一个错误 名为 TypeError str 对象无法解释为整数 我哪里搞错了 from collections import Order
  • 在生产环境中使用代码优先降级(回滚)数据库

    我有一个网络应用程序 安装在客户的计算机上供他们内部使用 我使用 C MVC5 和代码优先的实体框架 我使用了自动迁移 true 但我停止并将其设置为 false 我将其安装在生产环境 发行版 上 使用部署包 无 Visual Studio
  • TailwindCSS中的transition-all和transition有什么区别

    Tailwind 提供了多个实用程序来控制 CSS 属性转换 其中有transition and transition all 我检查了这两个类的 CSS 属性 这里它们的顺序相同 transition property backgroun
  • 检测声音是否在 Selenium 中播放

    我在我正在开发的项目的 iframe 中加载了一些第三方网站 但我需要以某种方式检测这些网站是否正在播放任何声音 我没有看到任何使用 WebDriver 的方法来查看浏览器中是否正在播放声音 是否有其他方法来查询虚拟机本身 在现代 HTML
  • 如何通过 decltype 声明迭代器的值

    在 C 98 中 我通常使用以下代码来声明迭代器值类型中的变量 typename std iterator traits
  • 在 python 中对局部变量使用显式 del

    使用显式的最佳实践和建议是什么delpython 中的语句 我知道它用于删除属性或字典 列表元素等 但有时我看到它在代码中的局部变量上使用 如下所示 def action x result None something produce so
  • Go数组初始化

    func identityMat4 16 float return 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 我希望你能从这个例子中明白我想要做什么 我如何在 Go 中执行此操作 func identityMat4 1
  • 递增:x++ 与 x += 1

    我读到 为了清楚起见 许多开发人员使用 x 1 而不是 x 我知道 x 对于新开发人员来说可能会含糊不清 而 x 1 总是更清晰 但是两者之间的效率有什么区别吗 使用 for 循环的示例 for x 0 x lt 1000 x 1 vs f
  • 在Python中删除文件行

    我正在尝试创建一个接受用户名和高分的程序 如果他们已经是用户 他们会更新到新的高分 或者如果不是 则仅添加高分 我的代码是 try a open data r except FileNotFoundError a open data w a
  • 有没有办法允许用户从网站复制文本,并且文本不格式化?

    几乎只是一个问题 我有一个客户要求在整个网页上使用几乎白色文本的负片设计 但测试人员表示 从网站复制和粘贴很烦人 因为复制到 Word 等内容时 所有内容都显示为白色文本 当用户尝试从网站复制文本时 是否有办法预先删除格式 或者有没有办法劫
  • javax.servlet.http.Cookie 的 getDomain() 返回 null

    如何获取 cookie 的实际域 getDomain getPath 返回 null 我也设置了适当的值 我正在使用response addCookie cookie 提前致谢 问候 普拉尚特 饼干来了in从浏览器可能没有可用的数据 只有
  • Spring Hibernate 模板何时使用以及为什么?

    问候 目前正在开发小型 Web 服务应用程序 其中来自 Web 服务 使用 CXF Spring 的响应被处理并保存到数据库 为了使用数据库 我使用 Hibernate 3 5 在网上浏览一些Hibernate Spring的例子 我经常可
  • 部署 Apache Camel 应用程序时出现警告

    当我将应用程序部署到 GlassFish 时 我看到以下警告 WARN AnnotationTypeConverterLoader Ignoring converter type org apache activemq camel conv
  • valgrind 在使用 libcurl 时检测内存泄漏(无 ssl)

    在我的 C 程序中 我使用 libcurl 的一些基本函数 今天我运行 valgrind 来检查是否存在内存泄漏 并且 valgrind 疯狂地报告了多个错误 我基本上追踪到 CURL curl CURLcode res curl curl