wangynag的个人博客分享 http://blog.sciencenet.cn/u/wangynag

博文

VLD检查内存泄漏(C语言)

已有 2529 次阅读 2022-4-24 16:08 |个人分类:编程相关|系统分类:科研笔记

  

  在C语言中,在一些情况下需要进行动态内存的分配与释放操作。动态内存的申请一般用malloc、calloc、realloc函数。在使用结束之后,需要对内存进行释放,一般使用free函数。但是保不齐有时忘记释放内存,导致程序运行过程中一直申请内存,而没有释放内存,程序占用内存一直增大,这种情况就是“内存泄漏”。

    人工检查内存泄露的难度较大,费时费力,下面介绍一个检查内存泄漏的好用的工具。工具获取方法在文末。工具VLD(Visual Leak Detector)2.5.1使用方法如下。


1,首先下载压缩包并解压,解压后文件包括

image.png


2,将bin下的四个文件复制到项目的DEBUGE文件夹下,注意根据项目信息选择使用WIN32子文件夹还是WIN64字文件夹。四个文件复制后DEBUGE文件夹如下

Data (D:) z_Projects gamp_2021 
dbghelp.dll 
VI gamp_2021.exe 
gamp_2021.pdb 
Debug 
Microsoft. DTfvV.D H L. manifest 
vid x86_dll 
vld_x86.pdb 
2016/8/25 21:22 
2021 /11/27 15:49 
2021/1 1/27 15:49 
2016/8/25 21:22 
2017/1/30 20:30 
2017/1/30 20:30 
Program Debug Da„. 
MANIFEST 
Program Debug Da„. 
p Debug " 
1,056 KB 
1,300 KB 
1,956 KB 
KB 
335 KB 
6,756 KB 
ps.DCB


3,在项目属性页做如下修改,注意填写自己VLD所在的路径

gamp_2021 
Debug 
XML 
Windows 
include 
$(VC ExecutablePath_x86);S(CommonExecutablePath) 
IncludePath); 
$(VC ReferencesPath x86); 
PATH


4,在文件主函数的文件头,添加 #include<vld.h>

gam p.h 
mainl X 
rtkcmn.c 
lude <vld. h> PPP.c 
16 
ppp_tri.c 
4] gamp_2021 
2 
3 
4 
5 
6 
*Inclue s arg. h) 
*include "gamp. h" 
myRtkcmn.c 
/* max number 
*define 
e how 
WAXFILE

   


5,最后,运行程序,根据终端窗口提示,即可找到内存泄漏的地方,具体到代码所在行。如果没有代码泄漏情况,提示如下。

* The total time for running the program: 21. 681 seconds 
o memory leaks detected. 
isual Leak Detector is now exiting. 
2021. exe 10168) djUH'„ 00 
"IA" "j±Ji" o



6,代码可以从如下链接下载

链接:https://pan.baidu.com/s/1meoeJiwHtHdOkMgMzV4wPg 

提取码:d0tg





https://blog.sciencenet.cn/blog-3480951-1335423.html


收藏 IP: 211.70.208.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-10-19 22:55

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部