当前位置: 首页 > news >正文

学习网站建设的心得体会深圳小程序开发设计

学习网站建设的心得体会,深圳小程序开发设计,wordpress 两个下划线,网站seo置顶文章目录内存泄漏方案一方案二:CRT调试定位代码位置方法1方法2其它问题方案三:使用vs诊断工具方案四:使用工具VLD(Visio Leak Detector)方案五Cppcheck内存泄漏 内存泄漏:指的是在程序里动态申请的内存在使…

文章目录

  • 内存泄漏
  • 方案一
  • 方案二:CRT调试
  • 定位代码位置
    • 方法1
    • 方法2
    • 其它问题
  • 方案三:使用vs诊断工具
  • 方案四:使用工具VLD(Visio Leak Detector)
  • 方案五Cppcheck

内存泄漏

内存泄漏:指的是在程序里动态申请的内存在使用完后,没有进行释放,导致这部分内存没有被系统回收,久而久之,可能导致程序内存不断增大,系统内存不足……引发一系列灾难性后果

方案一

#if defined(WIN32) && defined(_MSC_VER) &&  defined(_DEBUG)
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#define DEBUG_NEW new( _NORMAL_BLOCK, __FILE__, __LINE__ )
#define new DEBUG_NEWint main()
{
#if defined(_MSC_VER) && defined(_DEBUG)_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);
#endif
.......
}

方案二:CRT调试

  1. C 运行时库 (CRT) 调试堆函数
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
  • #include必须按照以上所示顺序。
  • #define语句将 CRT 堆函数的基版本映射到对应的“Debug”版本。能获取较为详细的内存泄漏转储信息。
  • crtdbg.h:将 malloc 和 free 函数映射到其“Debug”版本 _malloc_dbg 和 _free_dbg,这些函数将跟踪内存分配和释放。此映射只在调试版本(在其中定义了_DEBUG)中发生。发布版本使用普通的malloc 和 free 函数。
  • 在编译时要把工程属性中的“代码生成”中的“运行时库”改为:“多线程调试(/MTd)”。
  1. 转储内存泄漏信息:在main函数最后面一行,加上一句_CrtDumpMemoryLeaks()
#define new  new(_CLIENT_BLOCK, __FILE__, __LINE__)int main()
{........._CrtDumpMemoryLeaks();return 0;
}
  1. 在“输出”窗口中选择包含文件名和行号的行,然后按 F4 键即可进入到源文件中分配内存的行。

Microsoft:使用 CRT 库查找内存泄漏
VS检测内存泄漏,定位泄漏代码位置方法
使用_CrtSetDbgFlag检测内存泄露

定位代码位置

方法1

在main函数第一行加上:_CrtSetBreakAlloc(453)\ _crtBreakAlloc = 18

方法2

  1. 选择" 多线程调试(/MTd)"运行库(静态链接)
    在这里插入图片描述

  2. 按F11启动程序,程序会停在入口点。

  3. 此时调出Watch窗口,
    静态链接 在name项中输入_crtBreakAlloc,在value项中输入你要定位的内存分配编号;
    动态链接 在name项中输入{,,msvcr90d.dll}_crtBreakAlloc,在value项中输入内存分配号。注意msvcr90d.dll是vc2008环境使用的运行库dll,若你用的是其他版本vc,请换成对应版本的dll。

如name无法识别,可尝试下述:
{,,ucrtbased.dll}_crtBreakAlloc
_CrtSetBreakAlloc
{,,msvcrtd.dll}_crtBreakAlloc
(int*){,,msvcr120d.dll}_crtBreakAlloc

  1. 现在按F5运行,程序就会自动定位到你要调试的内存分配语句,这时候看call stack的信息会很有帮助。

VC使用_crtBreakAlloc快速定位内存泄漏所在代码
VC++/Qt Creator内存泄漏检测方法(1):_CrtSetDbgFlag与_CrtDumpMemoryLeaks

其它问题

VS编译程序缺失msvcp140d.dll、vcruntime140d.dll和ucrtbased.dll解决方法

方案三:使用vs诊断工具

VS2017的C++开发心得(十一)调试——内存溢出和内存泄漏(上)

方案四:使用工具VLD(Visio Leak Detector)

下载VLD:https://kinddragon.github.io/vld/

在main.cpp中引入

#pragma comment(lib,"F:/Program Files (x86)/Visual Leak Detector/lib/Win32/vld.lib")
#ifdef _DEBUG
#include "F:/Program Files (x86)/Visual Leak Detector/include/vld.h"
#endif

方案五Cppcheck

https://cppcheck.sourceforge.io/

C/C++ 内存泄漏检测工具汇总

http://www.yayakq.cn/news/142355/

相关文章:

  • 招聘网站开发需求分析dede如何设置网站端口
  • ps做网站边框东莞市住房和城乡建设局网站
  • 用手机搭建自己的网站怎样做访问外国网站才能不卡
  • 创意型网站建设生成短链接
  • 五金加工东莞网站建设电商设计培训课程
  • asp.net 网站强制兼容性运行宣传型网站功能定位
  • 建站之星怎么免费做网站wordpress怎么装
  • 青岛做商城网站贵阳网站建设价格
  • 一个网站做数据维护3天正常吗Python个人网站建设论文
  • 门户网站demo下载科技园
  • 彩票网站建设需要什么网站服务器建设的三种方法是什么
  • 做广告公司网站建设价格个人网站搭建平台
  • 红谷滩园林建设集团网站坊网站建设
  • 湖南省专业建设公司网站的机构定州做网站
  • 自己做网站的准备工作自己建立网站
  • 静安正规的设计公司网站陕西高速公路建设集团网站
  • 企业高端网站做网站公司长沙
  • 做本地网站wap手机网站 作用
  • 佛山伦教网站设计深圳建设品牌网站
  • 石家庄营销型网站建设费用网站建设好弄不好弄
  • 南阳医疗网站制作价格高端网站设计一般多少钱
  • 绵阳市中医医院网站建设怎样建设旅游网站
  • 网站做的支付宝接口吗东至县住房和城乡建设网站
  • 平台网站建设需求已收录的网站不好优化
  • 重庆平台网站建设平台青海个人旅游网站建设
  • 网站建设海外替人做赌彩网站被判刑
  • 网站建设前台功能网站和域名有关系吗
  • 铜梁旅游网站建设管理租车网站建设系统的设计
  • 上海网站分站建设地震网最新消息今天
  • 网站设计有限公司怎么样成功的门户网站