说明
使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。本篇介绍 VLD 配置文件中配置项 MaxDataDump 的使用方法。同系列文章目录可见 《内存泄漏检测工具》目录
(资料图片)
目录- 说明
- 1. 配置文件使用说明
- 2. 设置每个泄漏块数据显示的最大字节数
- 2.1 测试代码
- 2.2 MaxDataDump 为空时的输出
- 2.3 MaxDataDump = 0 时的输出
- 2.4 MaxDataDump = 10 时的输出
- 2.5 输出结果对比
1. 配置文件使用说明
在程序中通过 #include "vld.h"
的方式检测内存泄漏时,VLD 首先会尝试在程序的生成目录下读取 vld.ini
文件,若未读取成功,则会尝试在 VLD 的安装目录下读取 vld.ini
文件,若仍未读取成功,则会使用内置的默认配置,内置的默认配置如果不动源码是无法更改的,因此通过修改相应目录下的 vld.ini
文件来定制 VLD 功能是最好的选择。当配置参数等号右边为空,或者给配置了不合法值时,在使用过程中会被程序重置到默认值。
2. 设置每个泄漏块数据显示的最大字节数
参数名:MaxDataDump
。
有效赋值:0~4294967295
。
默认值:256
。
功能说明:设置每个泄漏块数据显示的最大字节数。如果为零,则完全不显示内存数据,只显示调用堆栈。当泄漏块很大时,把这个值设置得比较小可以使输出看起来逻辑更清晰。
2.1 测试代码
#include #include "vld.h"void testFun(int i){ int *ptr = new int[i]; printf("ptr = %08x.\n", ptr);}int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); testFun(10); return a.exec();}
测试环境:QT 5.9.2,MSVC 2015 32bit,Debug模式,VLD 版本为 2.5.1,VLD 配置文件只对该参数做修改,测试工程所在路径为:E:\Cworkspace\Qt 5.9\QtDemo\testVLD
。
2.2 MaxDataDump 为空时的输出
标准输出窗显示:
ptr = 007b2380.
VLD 输出报告:
Visual Leak Detector read settings from: D:\Program Files (x86)\Visual Leak Detector\vld.iniVisual Leak Detector Version 2.5.1 installed.WARNING: Visual Leak Detector detected memory leaks!---------- Block 1 at 0x007B2380: 40 bytes ---------- Leak Hash: 0xEA2B3F1B, Count: 1, Total 40 bytes Call Stack (TID 20816): ucrtbased.dll!malloc() f:\dd\vctools\crt\vcstartup\src\heap\new_array.cpp (15): testVLD.exe!operator new[]() + 0x9 bytes e:\cworkspace\qt 5.9\qtdemo\testvld\main.cpp (6): testVLD.exe!testFun() + 0x19 bytes e:\cworkspace\qt 5.9\qtdemo\testvld\main.cpp (14): testVLD.exe!main() + 0x7 bytes f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (74): testVLD.exe!invoke_main() + 0x1B bytes f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (264): testVLD.exe!__scrt_common_main_seh() + 0x5 bytes f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (309): testVLD.exe!__scrt_common_main() f:\dd\vctools\crt\vcstartup\src\startup\exe_main.cpp (17): testVLD.exe!mainCRTStartup() KERNEL32.DLL!BaseThreadInitThunk() + 0x19 bytes ntdll.dll!RtlGetAppContainerNamedObjectPath() + 0x11E bytes ntdll.dll!RtlGetAppContainerNamedObjectPath() + 0xEE bytes Data: CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD ........ ........Visual Leak Detector detected 1 memory leak (76 bytes).Largest number used: 76 bytes.Total allocations: 76 bytes.Visual Leak Detector is now exiting.
2.3 MaxDataDump = 0 时的输出
标准输出窗显示:
ptr = 013d1f78.
VLD 输出报告:
Visual Leak Detector read settings from: D:\Program Files (x86)\Visual Leak Detector\vld.iniVisual Leak Detector Version 2.5.1 installed. Suppressing data dumps.WARNING: Visual Leak Detector detected memory leaks!---------- Block 1 at 0x013D1F78: 40 bytes ---------- Leak Hash: 0xEA2B3F1B, Count: 1, Total 40 bytes Call Stack (TID 24860): ucrtbased.dll!malloc() f:\dd\vctools\crt\vcstartup\src\heap\new_array.cpp (15): testVLD.exe!operator new[]() + 0x9 bytes e:\cworkspace\qt 5.9\qtdemo\testvld\main.cpp (6): testVLD.exe!testFun() + 0x19 bytes e:\cworkspace\qt 5.9\qtdemo\testvld\main.cpp (14): testVLD.exe!main() + 0x7 bytes f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (74): testVLD.exe!invoke_main() + 0x1B bytes f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (264): testVLD.exe!__scrt_common_main_seh() + 0x5 bytes f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (309): testVLD.exe!__scrt_common_main() f:\dd\vctools\crt\vcstartup\src\startup\exe_main.cpp (17): testVLD.exe!mainCRTStartup() KERNEL32.DLL!BaseThreadInitThunk() + 0x19 bytes ntdll.dll!RtlGetAppContainerNamedObjectPath() + 0x11E bytes ntdll.dll!RtlGetAppContainerNamedObjectPath() + 0xEE bytesVisual Leak Detector detected 1 memory leak (76 bytes).Largest number used: 76 bytes.Total allocations: 76 bytes.Visual Leak Detector is now exiting.
2.4 MaxDataDump = 10 时的输出
标准输出窗显示:
ptr = 00541870.
VLD 输出报告:
Visual Leak Detector read settings from: D:\Program Files (x86)\Visual Leak Detector\vld.iniVisual Leak Detector Version 2.5.1 installed. Limiting data dumps to 10 bytes.WARNING: Visual Leak Detector detected memory leaks!---------- Block 1 at 0x00541870: 40 bytes ---------- Leak Hash: 0xEA2B3F1B, Count: 1, Total 40 bytes Call Stack (TID 18640): ucrtbased.dll!malloc() f:\dd\vctools\crt\vcstartup\src\heap\new_array.cpp (15): testVLD.exe!operator new[]() + 0x9 bytes e:\cworkspace\qt 5.9\qtdemo\testvld\main.cpp (6): testVLD.exe!testFun() + 0x19 bytes e:\cworkspace\qt 5.9\qtdemo\testvld\main.cpp (14): testVLD.exe!main() + 0x7 bytes f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (74): testVLD.exe!invoke_main() + 0x1B bytes f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (264): testVLD.exe!__scrt_common_main_seh() + 0x5 bytes f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (309): testVLD.exe!__scrt_common_main() f:\dd\vctools\crt\vcstartup\src\startup\exe_main.cpp (17): testVLD.exe!mainCRTStartup() KERNEL32.DLL!BaseThreadInitThunk() + 0x19 bytes ntdll.dll!RtlGetAppContainerNamedObjectPath() + 0x11E bytes ntdll.dll!RtlGetAppContainerNamedObjectPath() + 0xEE bytes Data: CD CD CD CD CD CD CD CD CD CD ........ ........Visual Leak Detector detected 1 memory leak (76 bytes).Largest number used: 76 bytes.Total allocations: 76 bytes.Visual Leak Detector is now exiting.
2.5 输出结果对比
- 当
MaxDataDump
为空时,使用默认值256
,由于泄漏块大小小于256 bytes
,因此泄漏内存中的数据40 bytes
全部显示了出来。 - 当
MaxDataDump = 0
时,不显示内存数据,只显示调用堆栈。 - 当
MaxDataDump = 10
时,只显示前10 bytes
的内存数据。
关键词:
(责任编辑:黄俊飞)推荐内容
- 环球视讯!【Visual Leak Detector】配
- 天天时讯:3月27日基金净值:中银顺泽回
- 天天视讯!大摩:分析师会议成为股价催化
- 净利润同比提升23.7%,宇通客车2022年年
- 大理漾濞苍山石门关景区门票价格(附售票
- “亚欧大陆资源环境与经济社会发展本底数
- 世界动态:海南椰岛:2022年度报告预计4月
- 国网城固县供电公司:“三严”举措推进党
- 刷牙的正确顺序 你未必知道 环球快播报
- 鼠标滑轮上下滚动失灵怎么办_鼠标滑轮上
- 【环球快播报】雷格拉吉:现如今可能称得
- 描写老年人外貌的段落 描写人外貌的优美
- 难阻失利!特雷-杨14中7&罚球12中11空砍2
- 当前视讯!4000余名徒步大军徜徉春风花海
- 世界快讯:2022年乌鲁木齐市城乡居民基本
- 狄寨派出所:“面对面”听民意、解民忧
- 世界新消息丨复星旅文公布2022年全年业绩
- 半山酒店里看雪山 云南迪庆特色体验引客
- 焦点热讯:进出口公司经营范围有哪些
- 中国太保:2022年度净利同比降8.3%拟每股
- 深度解读泰国游涨价:物价整体涨超两成,
- 赛尔号星际迷航即将更新!快来看看细节吧
- 盘点复试的6大“坑”!23考研人一定要避
- 红与黑简介
- 吴谨言为何突然不“红”了?看看她干过的
- 【新要闻】区直机关“先锋论坛”暨“大干
- 环球新消息丨什么是创新能力?如何培养创
- 魔兽血色墓地多少级去
- 平安稳谈对餐饮企业要求:节约、环保、放
- 全球观焦点:刘炟鑫:市场最坏行情或已经
- 迈克-布朗:没有福克斯的伤情更新 但他
- 大连疫情防控最新要求:现在去大连需要隔
- 手办钢模如何做_手办钢模做的方法_今日热
- 今日精选:坐看青竹变琼枝全文_坐看青竹
- 每日时讯!沙漠之舟的意思是什么_沙漠之舟
- 动态焦点:王菲的颤音_王菲颤音
- 【时快讯】河蚌怎么养
- 爱写作iwrite登录官网_爱写作如何查看误
- 江西新干萤石矿垮塌致4人死亡 省安委会
- C站日报 | 美团2022年营收同比增长22.8
- 华润濉溪南坪风电项目联合行业质量机构开
- 世界这么大还是遇见你歌词完整版图片(世
- 视点!苜蓿草一亩需要多少种子
- Java中restTemplate的使用
- 热点在线丨能源周动态
- 梁子媛初恋_梁子媛-动态焦点
- 上实发展:副总裁汪良俊退休
- 广州启动气象灾害(雷雨大风)Ⅳ级应急响
- 多城住宅成交量上升,年后房地产市场暖风
- 什么是车架号
- 天天热资讯!忒修斯希腊神话_忒修斯
- 丽都花园幼儿园举办第二届运动会
- 陆家嘴最新公告:拟收购昌邑公司100%股权
- 未婚不婚族立遗嘱人数六年增12倍
- 天天微头条丨对面app怎么样_对面app
- 剑王朝演员表-热推荐
- 栽好油茶树 种出致富林——浏阳市镇头镇
- 元宵节是法定节假日吗_元宵节是法定节假
- 陕西煤业(601225)3月23日主力资金净买
- 四川自贡两男女坠桥事前双方有争执 警方
- 深度解读泰国游涨价:物价整体涨超两成,
- 赛尔号星际迷航即将更新!快来看看细节吧
- 盘点复试的6大“坑”!23考研人一定要避
- 红与黑简介
- 吴谨言为何突然不“红”了?看看她干过的
- 【新要闻】区直机关“先锋论坛”暨“大干
- 环球新消息丨什么是创新能力?如何培养创
- 魔兽血色墓地多少级去
- 平安稳谈对餐饮企业要求:节约、环保、放
- 全球观焦点:刘炟鑫:市场最坏行情或已经
- 迈克-布朗:没有福克斯的伤情更新 但他
- 大连疫情防控最新要求:现在去大连需要隔
- 手办钢模如何做_手办钢模做的方法_今日热
- 今日精选:坐看青竹变琼枝全文_坐看青竹
- 每日时讯!沙漠之舟的意思是什么_沙漠之舟
- 动态焦点:王菲的颤音_王菲颤音
- 【时快讯】河蚌怎么养
- 爱写作iwrite登录官网_爱写作如何查看误
- 江西新干萤石矿垮塌致4人死亡 省安委会
- C站日报 | 美团2022年营收同比增长22.8
- 华润濉溪南坪风电项目联合行业质量机构开
- 世界这么大还是遇见你歌词完整版图片(世
- 视点!苜蓿草一亩需要多少种子
- Java中restTemplate的使用
- 热点在线丨能源周动态
- 梁子媛初恋_梁子媛-动态焦点
- 上实发展:副总裁汪良俊退休
- 广州启动气象灾害(雷雨大风)Ⅳ级应急响
- 多城住宅成交量上升,年后房地产市场暖风
- 什么是车架号
- 天天热资讯!忒修斯希腊神话_忒修斯
- 丽都花园幼儿园举办第二届运动会
- 陆家嘴最新公告:拟收购昌邑公司100%股权
- 未婚不婚族立遗嘱人数六年增12倍
- 天天微头条丨对面app怎么样_对面app
- 剑王朝演员表-热推荐
- 栽好油茶树 种出致富林——浏阳市镇头镇
- 元宵节是法定节假日吗_元宵节是法定节假
- 陕西煤业(601225)3月23日主力资金净买
- 四川自贡两男女坠桥事前双方有争执 警方
- 多个电池项目!惠州市2023年重点建设项目
- 投影仪怎样调亮度
- 供暖延期通知!
- 聚焦“微心愿” 传递爱与暖(把雷锋精
- 龙虎榜丨青海华鼎今日跌停,上榜营业部席
- 罂粟花的危害视频_罂粟花的危害 新消息
- 亚马逊英国国站_亚马逊英国 天天播资讯
- 如何申请腾讯大王卡 全球微资讯
- 孩子有这些表现,说明孩子长大了,妈妈可
- 理想L9,定位大型SUV,搭配Nappa真皮座椅
- 天天快资讯丨鄱阳湖水位继续回升 降雨致
- 《大男当婚》中曹小强最后选择了谁?
- 仓鼠简笔画胖胖的_仓鼠简笔画
- 广济药业(000952)3月22日主力资金净买
- 全球观天下!3月22日山东利华益集团油品
- 祝福老师的唯美图片(祝福老师的唯美句子
- 湖南加强汛前防汛准备 打好防汛抗旱主动
- 再被宁德新能源起诉 珠海冠宇与ATL专利
- 欧冠决赛2021决赛时间什么时候_欧冠决赛
- 北极星招聘网_北极星姐姐-看点