wince EVC 绘图内存泄露

最近在wince  用MFC作绘图的程序。

 

CDC *pCD = GetDC();

CDC memDC;

CBitmap memBitmap;

CPen newPen;

....

....//后面是画图代码

//以上定义的这些量都会在我的绘图的for()循环中,反复定义反复使用,其中,memBitmap, newPen,是供memDC在内存中画图使用的。
//正常的思维都是在使用完之后销毁。

newPen.DeleteObject();
memBitmap.DeleteObject();

memDC.DeleteDC();
pDC->ReleaseDC();

//如此释放

 

那么,这么释放的话,等for循环次数多了,wince就会提示内存不足,出现内存泄露。

 

那么,上面代码明明白白的写出来了,关于对使用的量进行释放。为什么还是出现内存泄露呢?

 

google了很久,后来在微软官方找到了解决办法。

http://support.microsoft.com/kb/819635/zh-cn

 

但是,按照他的办法,我还是出现了内存泄露。程序运行一段时间之后,会出现内存不足,内存泄露的问题。

 

 

后来,开始对代码进行调试,经过调试,我发现,

 

memBitmap.DeleteObject()

newPen.DeleteObject();

 

这两句运行之后,内存根本就没有释放空间。这说明这两句话没有起到释放的作用。

 

那么为什么没有起到作用呢?  莫非是因为memBitmap 和newPen还在使用当中?

 

于是调换了释放顺序如下:

 

memDC.DeleteDC();
newPen.DeleteObject();
memBitmap.DeleteObject()
pDC->ReleaseDC();

//newPen,memBitmap在memDC释放之后再释放。

 

问题就解决了,内存泄露问题解决了。

 

 

时间: 2024-11-02 05:12:01

wince EVC 绘图内存泄露的相关文章

c#用gdi+绘图出现的内存泄露

问题描述 在用到bitmap.GetHbitmap()的函数时,在win10下有时候会出现内存泄露,在win8下却不会,这是错误代码以及我捕捉到的日志 解决方案 解决方案二:再看一遍什么东西没释放解决方案三:该释放了的都释放了,我感觉应该是这个图片本身有问题,但是不知道该怎么过滤解决方案四:直接用DrawImage就好了,你这样反而更慢了解决方案五:引用3楼woshixiaohongmao的回复: 直接用DrawImage就好了,你这样反而更慢了 但是直接用DrawImage它的尺寸总是不对,扩

关于Android聊天界面中用使用adapter导致内存泄露的问题,目前不知道如何改善,大神帮忙看看

问题描述 关于Android聊天界面中用使用adapter导致内存泄露的问题,目前不知道如何改善,大神帮忙看看 之前一段时间使用一段时间老是导致内存升高,而且内存也不回收,一步一步的排除了很多地方, 到最后发现问题是出在adapter中,但是也不知道怎么改了. 大神帮看看哪些地方会导致内存泄露! public void setmList(List mList) { if (isgroup) { isDiaplayNickName = SharePreferenceUtil.get_Boolean

记录由Equal基础知识引起的内存泄露

      在最近的公司框架开发中,利用了网上某大牛的反射缓存库作为辅助.在测试的时候发现出现了巨大的内存泄露,在频繁的操作后,内存不断的产生巨大的开销,10多分钟就占有了5,6m的内存.解决问题的时,公司不能上网,没有内存分析工具,没有我钟爱的ANTS Memory Profiler帮助下,我们只能靠简单的内存输出来二分查找缩小范围,利用 System.Diagnostics命名空间下的Process的WorkingSet64属性来统计两次输出的内存增长量(WorkingSet64:描述关联的

C语言内存泄露检测--Memwatch

项目:迅雷下载库内存泄露检测 作者:曾金龙 供职:深圳迅雷网络技术股份有限公司 领域:迅雷下载库 时间:2014-07-26 迅雷的移动下载库是用C语言编写的,为了能够横跨欧亚非拉(ios,android,还有诺基亚的什么系统来着,对了symban)和性能,我们厂的下载库就选择了C,然后在C代码里面使用各种宏,预编译等来达到一 个下载库,多平台使用.不过平台相关的都已经约束在了一个叫common的库里面的一个子模块里面了.这极大的解放了我厂的码农朋友. 但是C毕竟是C,在聊起C的时候,我们组最喜

Python中由于logging模块误用导致的内存泄露的解决方法

  Python中由于logging模块误用导致的内存泄露的解决方法         这篇文章主要介绍了解决Python中由于logging模块误用导致的内存泄露,针对由于过多的UDP连接所产生的问题,需要的朋友可以参考下 首先介绍下怎么发现的吧, 线上的项目日志是通过 logging 模块打到 syslog 里, 跑了一段时间后发现 syslog 的 UDP 连接超过了 8W, 没错是 8 W. 主要是 logging 模块用的不对 我们之前有这么一个需求, 就是针对每一个连接日志输出当前连接

htmlcxx中css文件解析中yyparse有内存泄露,哪位大神能不能帮忙看一下

问题描述 htmlcxx中css文件解析中yyparse有内存泄露,哪位大神能不能帮忙看一下 使用最新版的htmlcxx0.85版,把内部的css解析部分抽出之后,检测出内存泄露

android开发中的java内存泄露分析

做了较长时间的android开发了,发现其实android应用开发入门容易,但是进阶或者成为高级工程师,需要具备的基础能力还是非常高的:性能优化.内存泄露.apk瘦身.热修复等等,这些都非常的考验一个人的能力.android成长之路还很长,自己会持续的走下去.本文主要介绍android内存泄露方面的知识.其实要真的理解内存泄露,需要对JVM.java语言有一定的了解,在这个基础上就比较容易理解本文了. 一.内存泄露概念 在java中,如果一个对象没有可用价值了,但又被其他引用所指向,那么这个对象

关于MFC下检查和消除内存泄露的技巧

摘要 本文分析了Windows环境使用MFC调试内存泄露的技术,介绍了在Windows环境 下用VC++查找,定位和消除内存泄露的方法技巧. 关键词:VC++:CRT 调试堆函数: 试探法. 编译环境 VC++6.0 技术原理 检测内存泄漏的主要工具 是调试器和 CRT 调试堆函数.若要启用调试堆函数,请在程序中包括以下语句: #define CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h>注意 #include 语句

浏览器中的内存泄露

什么是内存泄露 内存泄露是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束.在C++中,因为是手动管理内存,内存泄露是经常出现的事情.而现在流行的C#和Java等语言采用了自动垃圾回收方法管理内存,正常使用的情况下几乎不会发生内存泄露.浏览器中也是采用自动垃圾回收方法管理内存,但由于浏览器垃圾回收方法有bug,会产生内存泄露. 内存泄露Quick View 不同的浏览器中存在各种内存泄露方式,目前发现的主要是这样几种: 1.循环引用 已经确认存在泄漏的浏览器:IE6.0 FF2.0