主要方法:利用系统带的函数:EnableMemLeakCheck() 和函数重载,能快速准备的定位到内存泄漏的地方,方法简单且实用,值得借用。

#include <crtdbg.h>

#ifdef_DEBUG    //重载一下new函数,这样能得到使用new 开辟空间而发生泄漏的文件和所在行,这就是定位
#define new   new(_NORMAL_BLOCK,__FILE__, __LINE__)
#endif

void EnableMemLeakCheck()  //用于检测是否有内存泄漏。
{

_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG)|_CRTDBG_LEAK_CHECK_DF);

}

void main()
{
   EnableMemLeakCheck();
   int *leak = new int[10];
}

运行后得到的消息:

Loaded 'C:\WINNT\System32\ntdll.dll', no matchingsymbolic information found.
Loaded 'C:\WINNT\system32\kernel32.dll', no matching symbolicinformation found.
Detected memory leaks!
Dumping objects ->
D:\DS_Learn\meleak\test1.cpp(19) : {39}normal block at 0x00430120, 40 bytes long.
 Data:<               > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CDCD
Object dump complete.
The thread 0x91C has exited with code 4391200 (0x430120).
The program 'D:\DS_LEARN\meleak\Debug\meleak.exe' has exited withcode 4391200 (0x430120).

很快就能定位到内存泄漏的地方。

我原来也利用相关的方法,在C代码中,重载malloc 和free,也能很好的检测有没有内存泄漏和发生泄漏的地方,方法都很简单,其实自己在写代码注意一下结构,还是很容易避免发生内存泄漏。

平时喜欢用这样的结构:

projectname_init(); //在初始化时,开辟好空间,对project中一些变量,如结构体开辟空间

projectname_process();  //作相关的处理

projectname_uninit();    //结束程序运行,释放所以动态分配的空间。

内存泄漏快速定位方法相关推荐

  1. linux如何定位内存泄漏,快速定位内存泄漏的套路(linux)

    快速定位内存泄漏的套路(linux) 快速定位内存泄漏的套路(linux) https://blog.csdn.net/xieyihua1994/article/details/105248362/ ...

  2. C++中内存泄漏的检测方法介绍

    本文介绍C++中内存泄漏的检测方法. 首先我们需要知道程序有没有内存泄露,然后定位到底是哪行代码出现内存泄露了,这样才能将其修复. 最简单的方法当然是借助于专业的检测工具,比较有名如BoundsChe ...

  3. 7 php 内存泄漏_PHP内存泄漏分析定位

    说明:本文来自作者  邹毅 在 GitChat 上分享「  PHP 内存泄漏分析定位」 目录 场景一 程序操作数据过大 场景二 程序操作大数据时产生拷贝 场景三 配置不合理系统资源耗尽 场景四 无用的 ...

  4. linux内存泄漏通用排查方法

    一.   概述 Linux下经常遇到内存泄漏的问题,尤其对C/C++开发人员来说是一个亘古不变的话题,现在介绍解决Linux内存泄漏问题的方法层出不穷,让人眼花缭乱,但是作为开发人员应该从本质上了解为 ...

  5. C语言内存泄漏问题检视方法

    一般来说C语言中内存泄漏的要素包括:函数内有局部指针变量定义:对该局部指针有通过上一小节中"两种堆内存获取方法"之一获取内存:在函数返回前(含正常分支和异常分支)未释放该内存,也未 ...

  6. 内存泄漏的定位与排查:Heap Profiling 原理解析

    系统长时间运行之后,可用内存越来越少,甚至导致了某些服务失败,这就是典型的内存泄漏问题.这类问题通常难以预测,也很难通过静态代码梳理的方式定位.Heap Profiling 就是帮助我们解决此类问题的 ...

  7. [Linux段错误 :C/C++]一种内存泄漏的排查方法

    文章目录 前言 一.如何引起内存泄漏? 二.为何判断是否为内存泄漏? 查看内存 查看内存命令 top |grep xxx命令 如何定位代码中的内存泄漏? 写文件 unlink函数说明 总结 前言 内存 ...

  8. PHP 内存泄漏分析定位

    转载地址:https://mp.weixin.qq.com/s/98D_VtkFEM5bZsu9cazggg? 目录 场景一 程序操作数据过大 场景二 程序操作大数据时产生拷贝 场景三 配置不合理系统 ...

  9. 7 php 内存泄漏_PHP 内存泄漏分析定位

    引用前言 本文开始撰写时我负责的项目需要用php开发一个通过 Socket 与服务端建立长连接后持续实时上报数据的常驻进程程序,在程序业务功能开发联调完毕后实际运行发送大量数据后发现内存增长非常迅速, ...

最新文章

  1. 报名 | 面向智慧城市的人本尺度城市形态:理论、方法与实践讲座
  2. 那些在一个公司死磕5-10年的人,最后都怎么样了...
  3. Gradle Android客户端程序打包(基于gradle 2.10版本验证通过)
  4. 登录业务介绍(单点登录)
  5. 96D - Police Stations
  6. RouterModule.forRoot() called twice
  7. java并发(一):初探线程的创建
  8. Node.js 抓取电影天堂新上电影节目单及ftp链接
  9. libxml2如何配合php使用,libxml2实现xml文档的节点的修改
  10. python如何截长图_Python网页截图/屏幕截图/截长图如何实现?
  11. mysql sql 隐藏信息
  12. 低版本系统兼容的ActionBar(三)自定义Item视图+进度条的实现+下拉导航+透明ActionBar...
  13. OpenDDS的动态绑定bind_config传输配置和实例
  14. vue的App.vue
  15. 计算机打开程序乱码,打开软件乱码怎么解决,详解win7电脑打开软件乱码的解决方法...
  16. 在word2016中使用宏(VBA)来自动设置表格行高
  17. 店铺每日生意营业流水记账本
  18. Matlab镜像建模产生啸叫信号,基于MATLAB有噪声语音信号的处理(最终稿)
  19. 地统计学半方差分析几个名词含义说明
  20. 佳力奇IPO过会:拟募资11亿 西安现代与华控湖北是股东

热门文章

  1. ArcGIS如何在一个矢量上用不同颜色进行标注
  2. 【转】Azure应用部署方式对比
  3. 计算机系统的备份与还原实验报告,数据库《数据备份与还原》实验报告.doc
  4. element.style内联样式修改
  5. emui消息推送服务器,别再抱怨,这次或许真的轮到你了,EMUI9.1推送进度再次更新...
  6. w8计算机配置要求,win8配置要求 详细介绍
  7. 【2019牛客暑期多校训练营(第二场) - H】Second Large Rectangle(单调栈,全1子矩阵变形)
  8. 【51Nod - 1106 】质数检测 (水题,数论)
  9. java 单例 饿汉式_Java-单例设计模式(懒汉与饿汉)
  10. raft算法mysql主从复制_Etcd raft算法实现原理分析