c++内存泄漏的解决方法,c++内存泄漏的几种情况

  c++内存泄漏的解决方法,c++内存泄漏的几种情况

  环境:Windows10,VS2019,Qt5.9.7,C 11

  目的:定位并解决内存泄漏问题。

  VS2019自带的诊断工具可以在程序运行时打开诊断工具窗口——“检查内存使用情况——”启用堆栈快照。

  根据各种差异,点击左侧箭头指示的视图实例,准确定位内存泄漏点。

  Windows CRT调试(用CRT库查找内存泄漏)官方有详细描述:官网链接:用CRT库查找内存泄漏-visual studio(Windows) Microsoft Docs

  我简单描述一下:

  1://debug _ new.cpp

  //使用cl/EHsc/W4/D _ DEBUG/MDd DEBUG _ new . CPP进行编译

  #define _CRTDBG_MAP_ALLOC

  #包含cstdlib

  #包含crtdbg.h

  #ifdef _DEBUG

  #定义DBG_NEW new ( _NORMAL_BLOCK,__FILE__,__LINE__)

  //如果需要,用_CLIENT_BLOCK替换_NORMAL_BLOCK

  //分配为_CLIENT_BLOCK类型

  #否则

  #定义DBG _新新

  #endif

  结构窗格{

  int x;

  };

  void main() {

  Pod * pPod=DBG _新Pod;

  pPod=DBG _新荚;//哎呀,泄露了pPod原文!

  删除pPod

  _ CrtDumpMemoryLeaks();//直接打印内存泄漏信息

  }模式2:/2://#ifdef _DEBUG

  //# define DEBUG _ CLIENT BLOCK new(_ CLIENT _ BLOCK,__FILE__,__LINE__)

  //#else

  //#定义调试_客户端块

  //#endif

  //#define _CRTDBG_MAP_ALLOC

  //#包含stdlib.h

  //#包含crtdbg.h

  //#ifdef _DEBUG

  //#定义新的调试客户端块

  //#endif

  //_CrtMemState s1,s2,S3;

  //_ CrtMemCheckpoint(S1);//记录s1的内存数据

  //做某事

  //_ CrtMemCheckpoint(S2);//记录s1的内存数据

  //if (_CrtMemDifference( s3,s1,s2))

  //_ CrtMemDumpStatistics(S3);//内存泄漏,两个内存数据不一致,差结果返回s3。打印信息VLD(可视化泄漏检测器)仅适用于vc,而Visual C #的增强内存泄漏检测非常易于使用。如果你也是msvc编译项目,强烈推荐这种方法。只需要在所使用的项目中的任何文件处包含它的“vld.h”头文件,这样会使调试更加笨拙。此外,还需要在项目属性中添加vld头文件和库文件所在的路径。按理说这两条路径都要加在环境变量里才能够全局使用,但是我试过了,就是不行。我不知道为什么。

  程序加载成功后,可以看到程序运行时的打印信息,提示您加载vld库。关闭程序后,调试窗口会打印内存泄漏等信息。

  官方网站:Visual Leak Detector Visual C #的增强内存泄漏检测

  养成良好的C编码习惯,合理使用c 11及以上提供的智能指针,合理使用RALL机制转行。对了,下面是linux下Valgrind常用的Linux调试工具。网上很多资料不介绍。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • office2010激活密钥大全 怎么永久激活office2010
  • project2010产品密钥免费_project2010激活密钥永久激活码
  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • chatgpt是什么?为什么这么火?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • CAD中怎么复制图形标注尺寸不变,CAD中怎么复制图形线性不变
  • cad中怎么创建并使用脚本文件,cad怎么运行脚本
  • cad中快速计算器的功能,cad怎么快速计算
  • cad中快速修改单位的方法有哪些,cad中快速修改单位的方法是
  • cad中心点画椭圆怎么做,cad轴测图怎么画椭圆
  • CAD中常用的快捷键,cad各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: