GDI泄漏和内存泄漏 检测方法

GDI泄漏检测方法:

1、检查是否GetWindowDC(),后是否有 ReleaseDC()

2、CFont *pOldFont=pDC->SelectObject(&m_Font);

后是否有pDC->SelectObject(pOldFont);

3、CBitmap bmp;
 bmp.CreateCompatibleBitmap(&dc, rcClient.Width(), rcClient.Height());

后是否记得bmp.DeleteObject();

 

内存泄漏 检测方法

1、检查new,VirtualAlloc , HeapAllocmalloc 后是否没有释放

2、_CrtMemState s1, s2, s3;
_CrtMemCheckpoint( &s1 );
// memory allocations take place here
_CrtMemCheckpoint( &s2 );

if ( _CrtMemDifference( &s3, &s1, &s2) )
_CrtMemDumpStatistics( &s3 );

 

CMemoryState msOld;

msOld.Checkpoint();

 

msOld.DumpAllObjectsSince();

 

3、_CrtSetBreakAlloc(18);

4、BoundsChecker工具

5、f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141)
若出现上面的输出则用_CrtDumpMemoryLeaks();来调试

f:\sourcesafe fold\mccsclient\mccsclientdlg.cpp(1863) : {63669} normal block at 0x02F21278, 8 bytes long.
 Data: <     x  > E8 CC F1 02 F0 78 F1 02

 

一般这个问题是由CString引起的,追一下,改为char指针类型即可。

时间: 2024-09-09 09:01:07

GDI泄漏和内存泄漏 检测方法的相关文章

详解Android内存泄漏检测与MAT使用

内存泄漏基本概念 内存检测这部分,相关的知识有JVM虚拟机垃圾收集机制,类加载机制,内存模型等.编写没有内存泄漏的程序,对提高程序稳定性,提高用户体验具有重要的意义.因此,学习Java利用java编写程序的时候,要特别注意内存泄漏相关的问题.虽然JVM提供了自动垃圾回收机制,但是还是有很多情况会导致内存泄漏. 内存泄漏主要原因就是一个生命周期长的对象,持有了一个生命周期短的对象的引用.这样,会导致短的对象在该回收时候无法被回收.Android中比较典型的有:1.静态变量持有Activity的co

在AIX V5.3中使用MALLOCDEBUG隔离并解决内存泄漏-用于完成烦琐任务的有用工具

AIX Version 5.3 中附带的 malloc 子系统监视工具 MALLOCDEBUG,可以帮助您隔离内存泄漏. 内存泄漏是非常棘手的问题,并且处理起来需要很大的代价,所以使用好的工具以确定并了解出现泄漏的 原因是非常重要的.本文中提供的示例代码将向您展示处理内存泄漏的一种方法. 引言 在编写应用程序时进行动态内存分配是非常必要的.它可以在程序运行的过程中帮助分配所需的内存 ,而不是在进程启动的时候就进行分配.然而,有效地管理这些内存同样也是非常重要的.在大型的.复 杂的应用程序中,内存

调试内存泄漏的应用程序: 发现并防止托管代码中出现内存泄漏

本文讨论: 理解托管应用程序中的内存泄漏问题 .NET 应用程序中所用的非托管内存 帮助 .NET 垃圾收集器发挥应有功效 本文使用了以下技术: .NET Framework 目录 .NET 应用程序中的内存 检测泄漏 堆栈内存泄漏 非托管堆内存泄漏 "泄漏"托管堆内存 总结 一提到托管代码中出现内存泄漏,很多开发人员的第一反应都认为这是不可能的.毕竟垃圾收集器 (GC) 会负责管理所有的内存,没错吧?但要知道,垃圾收集器只处理托管内存.基于 Microsoft .NET Framew

分析、调试内存泄漏的应用程序

<!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face {font-family:宋体; pan

Android 有效的解决内存泄漏的问题实例详解

Android 有效的解决内存泄漏的问题 Android内存泄漏,我想做Android 应用的时候遇到的话很是头疼,这里是我在网上找的不错的资料,实例详解这个问题的解决方案 前言:最近在研究Handler的知识,其中涉及到一个问题,如何避免Handler带来的内存溢出问题.在网上找了很多资料,有很多都是互相抄的,没有实际的作用. 本文的内存泄漏检测工具是:LeakCanary  github地址:https://github.com/square/leakcanary 什么是内存泄漏? 内存泄漏

Android内存泄漏终极解决篇(下)_Android

一.概述 在 Android内存泄漏终极解决篇(上)中我们介绍了如何检查一个App是否存在内存泄漏的问题,本篇将总结典型的内存泄漏的代码,并给出对应的解决方案.内存泄漏的主要问题可以分为以下几种类型: 静态变量引起的内存泄漏 非静态内部类引起的内存泄漏 资源未关闭引起的内存泄漏 二.静态变量引起的内存泄漏 在java中静态变量的生命周期是在类加载时开始,类卸载时结束.换句话说,在android中其生命周期是在进程启动时开始,进程死亡时结束.所以在程序的运行期间,如果进程没有被杀死,静态变量就会一

Android内存泄漏终极解决篇(上)_Android

一.概述 在Android的开发中,经常听到"内存泄漏"这个词."内存泄漏"就是一个对象已经不需要再使用了,但是因为其它的对象持有该对象的引用,导致它的内存不能被回收."内存泄漏"的慢慢积累,最终会导致OOM的发生,千里之堤,毁于蚁穴.所以在写代码的过程中,应该要注意规避会导致"内存泄漏"的代码写法,提高软件的健壮性. 本文将从发现问题.解决问题.总结问题的三个角度出发,循序渐进,彻底解决"内存泄漏"的问题

谈一谈Android内存泄漏问题_Android

内存泄漏:是指内存得不到GC的及时回收,从而造成内存占用过多,从而导致程序Crash,也就是常说的OOM. 一.static 先来看下面一段代码 public class DBHelper { private static DBHelper db= null; private DBHelper() { } public static DBHelper getInstance(Context context) { if (bitmapUtils == null) { synchronized (D

关于内存泄漏

本文由 ImportNew - 范琦琦 翻译自 Programcreek.如需转载本文,请先参见文章末尾处的转载要求. ImportNew注:如果你也对Java技术翻译分享感兴趣,欢迎加入我们的 Java开发 小组.参与方式请查看小组简介. Java最显著的优势之一就是它的内存管理机制.你只需简单创建对象,然后Java垃圾回收机制便会小心的分配和释放内存.然而,事实并非如此简单,因为在Java应用程序中经常发生内存泄漏. 本教程说明了什么是内存泄漏,为什么会发生,以及如何防止它们. 1.什么是内