当前位置: 首页 > news >正文

内存检测工具——Qt Creator

前言

检测内存错误的工具,有很多个,我今天粗浅的学了一下可在Qt上使用的工具们:

  • Dr.Memory 工具之前我曾在关注的博主上看到相关的博客:C++(Qt)软件调试---内存调试器Dr.Memory(21)_dr. memory-CSDN博客

       今天尝试了一下,不尽人意。

  • Heob 工具是Qt Creator 的工具栏【分析】下的菜单项有此选项,然后学习了下,简单测试了下,定位是准确的。
  • Vargrind 是用于检测Linux环境内存泄漏的工具。由于当前开发环境是Windows,所以并未测试此工具的可行性。

环境

win10 + QtCreator 5.15.2 MSVC2019 32bit

工具 

Dr.Memory 与 Heob的优劣比较

Dr.Memory和Heob各有优缺点,适用于不同的场景和需求。

Dr.Memory

  • 优点‌:

    • 开源免费‌:Dr.Memory是一个开源工具,用户可以免费使用。
    • 跨平台支持‌:它支持Windows、Linux等多个操作系统,具有较好的兼容性。
    • 性能较好‌:相比其他同类工具,Dr.Memory在性能上更有优势,检测速度较快‌。
    • 功能丰富‌:除了内存泄漏检测,还可以检测内存越界、重复释放内存、空指针、野指针、堆栈溢出等问题‌。
  • 缺点‌:

    • 有时仍较慢‌:尽管比其他工具快,但在某些情况下仍然较慢‌。

Heob

  • 优点‌:

    • 集成度高‌:Heob特别适用于Qt Creator,可以很好地与Qt开发环境集成,使用方便‌。
    • 开源免费‌:Heob是一个开源工具,用户可以免费使用。
  • 缺点‌:

    • 平台限制‌:Heob主要适用于Windows平台,不适用于其他操作系统‌。
    • 功能限制‌:Heob只能检测动态链接库中的内存泄漏问题,对于其他类型的内存问题检测能力有限‌。

 

Dr.Memory

下载地址

Downloadhttps://drmemory.org/page_download.htmlhttps://github.com/DynamoRIO/drmemory/releaseshttps://github.com/DynamoRIO/drmemory/releases在当前的环境下,尝试了以下版本:

2.6.0 版本使用时,直接报错,无法打开安装目录下的某个文件,我直接去指定目录下查看了下,并没有此文件或文件夹。

2.5.0 和 2.4.18900版本 运行时并没报错,直接用Qt创建的项目,未有任何错误,它却指向main.cpp:7可能存在内存泄漏,但是源码此处只初始化了平台。

 

 如果以上只是误报,其他地方的内存泄漏可以检测出来也是可以的,但是并没有,我在后面添加了超级明显的内存泄漏(如下图),但是它还是只是指向了main.cpp:7,其他无任何错误。我将其写到其他类中仍是如此。

 然后我将main函数中平台初始化(之前报错)去掉,留下剩余的。

 检测结果如下:

 涉及的代码:

 

可看出除了第三处错,其他两处都是qt的源代码,而源代码几乎不可能有错。 

结论:感觉Dr.Memory与当前Qt不太适配,起码这三个版本都不适用于当前环境。所以,它目前无用,内存检测指向不准确 。

Heob

下载地址:

Releases · ssbssa/heob · GitHub

 Heob应该说属于官方推荐的内存检测工具,如下为官网的介绍,

Heob | Qt Creator Documentation

 可通过下方博客进行配置和试用。

QtCreator使用Heob进行程序内存泄漏检测 - 韭菜钟 - 博客园

 

本地仍是用以上代码作为示例进行测试,可看出明确检测出内存泄漏的位置。可通过“漏斗”进行筛选。其他检测出的问题只能自行判断了。

 

 结论:Heob操作简单,轻量级,可准确定位出内存泄漏位置,再加上Qt官网推荐使用,所以用这个工具没毛病。

 

 

相关文章:

  • git使用命令总结
  • python总结(3)
  • QT工程打开、编译、运行流程
  • Netty基础—2.网络编程基础三
  • Dify平台训练个人文档助手
  • 2024年群智能SCI1区TOP:混沌可行性恢复粒子群算法CEPSO,深度解析+性能实测
  • 20250212:linux系统DNS解析卡顿5秒的bug
  • 关于mybatis查询时,时间字段的映射问题
  • Java 集合框架大师课:集合框架源码解剖室(五)
  • 内网安全防护新思路 —— HFish + ELK 与 T-Pot 全面蜜罐系统比较分析
  • Ollama杂记
  • bin/python: bad interpreter: No such file or directory
  • Python:正则表达式
  • Java数据结构第二十二期:Map与Set的高效应用之道(一)
  • Nginx正向代理HTTPS配置指南(仅供参考)
  • K8s 1.27.1 实战系列(十)PV PVC
  • 三角形页面
  • DeepSeek API 客户端使用文档
  • 重生之我在学Vue--第7天 Vue 3 数据请求(Axios)
  • Unity辅助工具_头部与svn
  • 国务院关税税则委员会公布公告调整对原产于美国的进口商品加征关税措施
  • 观察|“双雄”格局下电池制造商如何生存:加码不同技术、抢滩新赛道
  • 碧桂园:砸锅卖铁保交房、持续推进保主体,尽快让公司恢复正常经营
  • 上海证监局规范辖区私募经营运作,6月15日前完成自评自纠
  • 【社论】职业上新,勇于“尝新”
  • 盖茨:20年内将捐出几乎全部财富,盖茨基金会2045年关闭