【转载】http://issf.blog.163.com/blog/static/1941290822009111894413472/

最近用GDI+实现了几个自定义控件,但是发现存在内存泄露问题

BOOL CGdiplusBugDlg::OnEraseBkgnd(CDC* pDC) 
{
Image* pImage = Image::FromFile(L"E:\\bac.bmp");
Graphics g(pDC->m_hDC);

g.DrawImage(pImage,0,0);

return TRUE;
}

因为没

delete pImage;

g.ReleaseHDC(pDC->m_hDC);

而这两个操作最好加上,否则肯定会泄露!

就造成了大量的内存泄露。也是奇怪了,在那么多的例子里也都没见去delete gdi+的资源。在网上搜了很久也没有搜到这方面内容。

最初的时候就觉得gdi+不用释放内存太奇怪了,但又没看见它在哪里new了。Image::FromFile直接返回一个指针也是特别奇怪..但MSDN里中居然也不说要去delete.

Bitmap 继承 Image, Image继承 GdiplusBase,在GdiplusBase里面发现了一些东西...

class GdiplusBase
{
public:
void (operator delete)(void* in_pVoid)
{
DllExports::GdipFree(in_pVoid);
}
void* (operator new)(size_t in_size)
{
return DllExports::GdipAlloc(in_size);
}
void (operator delete[])(void* in_pVoid)
{
DllExports::GdipFree(in_pVoid);
}
void* (operator new[])(size_t in_size)
{
return DllExports::GdipAlloc(in_size);
}
};

转载于:https://www.cnblogs.com/doudongchun/p/3699676.html

【转载】gdi+ 内存泄漏相关推荐

  1. 内存泄漏检测工具(转载)

    内存泄漏检测工具2007年08月08日 1.     ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库. 2.     Dmalloc-Debug ...

  2. (转载)VC的内存泄漏检查

    原文链接:https://blog.csdn.net/psbeond/article/details/99546363 日期: 2016-12-20 参考:MSDN:ms-help://MS.MSDN ...

  3. VC使用CRT调试功能检测内存泄漏(转载)

    /*********************************************************************************** 检测内存泄漏的基本工具是调试器 ...

  4. Java 理论与实践: 用弱引用堵住内存泄漏---转载

    要让垃圾收集(GC)回收程序不再使用的对象,对象的逻辑 生命周期(应用程序使用它的时间)和对该对象拥有的引用的实际 生命周期必须是相同的.在大多数时候,好的软件工程技术保证这是自动实现的,不用我们对对 ...

  5. 【转载】深入分析 ThreadLocal 内存泄漏问题

    前言 ThreadLocal 的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度.但是如果滥用 ThreadLocal,就可 ...

  6. Android内存泄漏检测及修复(转载)

    本文转载自:Android内存泄漏检测及修复 最近在查Android系统上的一个内存泄漏的问题,发现利用Android ADT带的DDMS的Heap功能很好用(需要系统默认开放权限较高才行,否则DDM ...

  7. 艾伟_转载:DataTable.NewRow 内存泄漏问题

    昨天做了一个自动生成Insert 语句的小工具,今天测试发现存在严重的内存泄漏问题,代码看了好几遍,没发现问题.后来用 .Net Memory Profiler 跟踪(跟踪方法见 用 .NET Mem ...

  8. [转载] 解析Java的JNI编程中的对象引用与内存泄漏问题

    参考链接: Java对象如何存储在内存中 JNI,Java Native Interface,是 native code 的编程接口.JNI 使 Java 代码程序可以与 native code 交互 ...

  9. 【转载】Linux free 查询可用内存和判断是否有内存泄漏

    centos7 使用 free -h 查看内存使用情况: used 表示 操作系统已经分配出去的内存 free 表示 还没分配出去的内存 判断内存是否泄漏的计算方法: Centos6计算方法:used ...

最新文章

  1. iOS多线程全套:线程生命周期,多线程的四种解决方案,线程安全问题,GCD的使用,NSOperation的使用(下)
  2. .NET 6新特性试用 | 总结:我最喜欢的5个特性
  3. jquery表单验证
  4. 定义并调用函数输出 fibonacci 序列_科学网—Zmn-0351 薛问天:再谈数学概念的定义,评新华先生《0345》...
  5. alloca函数的风险_alloca的函数范围中的goto是否有效?
  6. python文件转换成jar包_Python一键转Jar包,Java调用Python新姿势!
  7. SQLite学习手册(索引和数据分析/清理)-转
  8. 基于SSM的校园帮系统
  9. Java中的JSON解析
  10. ps黑作坊终极天空大师 一键换天空终极版破解版扩展面板
  11. 华为千亿美金年报里的5G、AI、云计算
  12. 太牛了!B 站 UP 主开发会写高考作文的 AI
  13. iOS真机测试详细步骤及图解
  14. 2019牛客暑期多校训练营(第四场)----E- triples II
  15. 36.有效的数独,超简单做法,一看就懂
  16. 非常有意思的人体时钟
  17. 量化投资学习必读书目之十二——《日本蜡烛图技术》
  18. 【conda】conda环境的复制移植的两种方法
  19. 使用spool导出数据
  20. 苹果三代耳机_链接2020.6.13其他团无线蓝牙耳机

热门文章

  1. pybind11介绍
  2. matlab最小分类错误全局二值化算法
  3. 【FFmpeg】ffmpeg命令详解(一)
  4. 【驱动】在内核源码中添加驱动程序
  5. linux驱动:音频驱动(七)交叉编译alsa库及工具集alsa-utils
  6. 二维数组c语言矩阵加法,C 语言实例 – 两个矩阵相加 - C 语言基础教程
  7. 猜数游戏python_Hello,Python!小鲸教你学Python(九)之文件操作
  8. linux ps命令大全,Linux ps命令例子汇总
  9. 修改cpu型号重启不变_猫头鹰展示D系列新款140毫米CPU散热器:更大散热片,能压400瓦...
  10. java modbus通讯协议_物联通讯协议一(Modbus)