内存条检测工具_有哪些_memtest


Time:2023-07-22 16:38:12

关于内存条检测工具的问题,我们总结了以下几点,给你解答:

内存条检测工具


内存条检测工具

一、背景

借用某度百科,给内存泄露下个定义:内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,从而导致程序运行速度减慢甚至系统崩溃等严重后果。

在以下情况下,内容泄露的后果尤为严重:

程序运行后置之不理,并且随着时间的流逝消耗越来越多的内存(比如服务器上的后台任务,尤其是嵌入式系统中的后台任务,这些任务可能被运行后很多年内都不会去管)。频繁分配新的内存,比如当显示高速大数据量的画面时。程序能够请求即使在程序终止之后也不会被释放的内存(比如共享内存)。泄漏发生在操作系统内部。泄漏发生在系统关键驱动中。内存非常有限,比如在嵌入式系统中。

在现代操作系统中,一个应用程序使用的常规内存在程序终止时会被释放回收(应用程序始终是受到操作系统管控的)。本文描述一个可用于Qt C++开发中进行内存检测的工具:vld

二、VLD介绍(2-1)安装

从官网获取vld安装包:https://kinddragon.github.io/vld/

与常规软件安装一样,选择“安装目录”,一直下一步即可。

(2-2)vld安装目录分析

当安装完成后,会在安装目录下有下列所示的目录文件结构:

bin目录:该目录下放置32位和64位的动态链接文件。

include目录:该目录下放置vld的头文件描述。

lib目录:该目录下放置32位和64位的库文件。

三、vld的使用

vld是以源码的文件和动态链接库的方式添加进我们自己开发源码和软件中的,所以在使用中需要按照以下步骤进行。本文将写一个简单的内存泄漏的实例来进行描述。

【注意事项】

vld只支持MSVC编译器,不支持MingW编译器。所以在QtCreator中选择构建应用软件的构建为MSVC的。

vld需在Debug版本下使用,在release下使用无效!(不会输出任何信息)

(3-1)将vld作为外部库添加进.pro工程文件中添加库

设置vld的库文件路径和头文件包含路径

完成后,将在工程文件.pro中添加如下的参数变量和配置值:

(3-2)以Debug版本编译构建项目工程

注意这里需以Debug版本进行软件构建,这样才会生成相关的调试信息。

(3-3)添加vld的动态链接库

因为在实际的构建过程中,我们生成的exe的路径是由QtCreator预定的,然而在exe同级目录下没有vld的动态链接库文件,如果此时运行程序,将会crashed退出!

这里提供两种方法解决:

(1)使用DESTDIR变量将生成的exe指定到vld对应的动态链接库目录下,本文就是bin/Win32/目录下。

(2)将vld的动态链接库文件和配置文件(本文是bin/Win32/目录下的文件)拷贝到我们项目生成的exe的同级目录下。如下图所示文件:

四、具体实例

现在我在QtCreator中创建了一个简单的工程:该工程将显示一个以QMainWindow为代表的主窗口。我在MainWindow类的构造函数中使用new创建了一个QPushButton:

很明显,上图所示的第10行代码处出现了内存泄漏。因为使用new分配了动态内存空间却没有释放这个内存区域,直到应用程序退出也没有!该QPushButton也没有添加到父级控件中(此处是MainWindow中),因此也不会被Qt的动态内存管理机制自动释放,因此这是妥妥的内存泄漏。

好啦,接下来就让我们来使用vld来进行内存泄漏检测吧:点击QtCreator的运行按钮即可,此刻将会在“应用程序数”一栏中看见相应的信息提示(如果没有,则证明vld没没有生效!) 检测结果如下:

可见,检测到了一处内存泄漏,且给出了数据概览、泄漏内存大小等信息。

五、vld配置项

VLD提供了一些配置项,可以通过vld.ini配置文件设置,默认情况将使用安装目录下的vld.ini,也可以将vld.ini拷贝到程序运行目录,这样仅当运行该程序时生效。

MaxTraceFrames:输出的堆栈级数限制AggregateDuplicates:若为"yes",则只在报告中输出特定泄漏位置的第一次泄漏MaxDataDump:转储数据大小限制ReportTo:内存泄漏报告的输出形式,可以使用"debugger"、 "file"或者 “both”ReportFile:内存泄漏报告的文件名,默认"memoryleakreport.txt"六、总结

Visual Leak Detector (VLD)是一款用于Visual C++的内存泄漏检测工具。它的特点是:可以得到内存泄漏点的调用栈,还可以得到它所在的文件和行号;可以获得泄漏内存的完整数据;还可以设置内存泄漏报告的级别;该工具是开源和免费的。美中不足的是,只能使用vc++编译器。关于Linux平台下的内存泄漏,可以使用valgrind工具来检测。

内存条检测工具memtest


内存条检测工具memtest

4.0的是最新版。你装了多大的内存它应该可以检测的。至少20分钟才算检测完,时间越长结果越精确。

使用说明:

1. 退出每一个正在您计算机中运行的程序。
2. 单击 [确定] 关闭此窗口,然后单击 [开始测试]。
3. 让 MemTest 至少运行20分钟。
    如果 MemTest 找到任何问题,那么它将会停止并且让您知道。您运行 MemTest 的时间越长,测试的结果就越准确。如果拥有多个核心/处理器,运行多个副本的 MemTest 并分别测试它们之间的内存大小。
    注意:可用内存填写为随意填写即可,只要总和加起来 等于 你的内存大小即可,^_^ 请在测试时,关闭 所有的应用程序,以避免内存测试不准确。


内存条检测工具有哪些


内存条检测工具有哪些

本文拓展问题:

内存条检测工具v4.20内存条检测工具怎么用内存条检测工具