首页 > 编程知识 正文

windows 内存泄漏检测工具,msvc编译器

时间:2023-05-03 09:23:58 阅读:165236 作者:285

msvc内存泄漏检测MSVC 调试库内建了内存泄漏检查工具,默认情况下没有开启,可以通过如下步骤开始

在代码的开头添加以下三行代码# define _ crtd GB _ map _ alloc # includecstdlib # includecrtdbg.h以重新定义new运算符

# ifdef _ debug # ifndef _ dgb _ new # defined GB _ new new (_ normal _ block,__FILE__,__LINE__ ) ) dded

_ crtsetdbgflag (Cr tdbg _ alloc _ mem _ df|_ Cr tdbg _ leak _ check _ df );测试用例

//Project1.cpp :此文件包含“主”函数。 程序的执行在此开始并结束。 //#includeiostream//msvc调试头文件# define _ crtd GB _ map _ alloc # includecstdlib # includecrtdbg.h/h /重定义new运算__FILE__,__LINE__ ) #definenewdgb_new ) #endif//_dgb_new ) ) ) efinedgb )。 } void do something (simple * out param ) { outParam=new Simple ); }受保护的: int * mint ptr; (; intmain(intargc,char** argv ) /内存检查_ crtsetdbgflag (Cr tdbg _ alloc _ mem _ df|_ Cr tdbg _ leak _ check au auto ) 简单ptr-do something (简单ptr ); STD : cout ' hello world ' STD :3360 endl; 返回0; } 测试结果 visual studio 输入窗口输出如下结果

检测内存学习! dumping objects-c :usersadministratorsourcereposproject1project1. CPP { 24 } : } usersadministratorsourcerepos _ project1 project project1. CPP (35 ) : { 159 } normalblockat0x 00 B3 f 838 882CB400C:(sers )管理员项目1 (项目1.CPP (24 ) : { 158 } normalblockat0x 00 b 41 c 58,4096 bytes long.4096 administratorsourcereposproject1 project1 project1. CPP (46 ) 3360 { 157 } normalblockat0x 00 B3 f 880

结果分析:

Project1.cpp(24 )内存泄漏位置在文件project1.CPP的第24行中

{160} :表示运行进程后的第160次内存分配

0x00B42C88 :此内存的起始地址

4096字节:内存分配大小

data : cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcddcdcd :写入此内存空间的内容

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。