【转载】gdi+ 内存泄漏

news/2024/7/7 18:45:55

【转载】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


http://lihuaxi.xjx100.cn/news/235404.html

相关文章

三、数据类型

一、有序无序可变不可变#1、有序:但凡有索引的数据都是有序的 #2、可变不可变 #可变类型:在值变了的情况下,id不变,证明在改原值 #不可变类型:在值变了的情况下,id也跟着变,证明不是在改原值二、…

iOS支付宝(Alipay)接入详细流程,比微信支付更简单,项目实战中的问题分析

最近在项目中接入了微信支付和支付宝支付,总的来说没有那么坑,很多人都说文档不全什么的,确实没有面面 俱到,但是认真一步一步测试下还是妥妥的,再配合懂得后台,效率也是很高的,看了这篇文章&a…

飞凌OK6410开发板移植u-boot官方最新版u-boot-2012.10.tar.bz2

Part0 准备知识 0.1 关键参数说明 0.1.1 开发板说明 OK6410是飞凌公司发布的一款开发板,当前有2个版本,OK6410-A和OK6410-B,我当前使用的是前者;前者也经历过升级,所以有128M ram的和较新的256内存的版本,n…

高德地图关键字搜索oc版

.h文件 // MapSearchViewController.h // JMT // // Created by walker on 16/10/11. // Copyright © 2016年 BOOTCAMP. All rights reserved. // #import <UIKit/UIKit.h> #import <AMapNaviKit/MaMapKit.h> #import <AMapSearchKit/AMapSearchKit.h&…

css3伪元素选择器before 和 after 的使用

:before 的作用, 在子元素的最前面, 添加一个伪元素, 伪元素内容通过 content 控制,可以在content属性中写入文本内容&#xff0c;但是通常为空字符串。 :after 的作用, 在子元素的最后面, 添加一个伪元素, 伪元素内容通过 content 控制,可以在content属性中写入文本内容&#…

swift代理传值

比如我们这个场景&#xff0c;B要给A传值&#xff0c;那B就拥有代理属性&#xff0c; A就是B的代理&#xff0c;很简单吧&#xff01;有代理那就离不开协议&#xff0c;所以第一步就是声明协议。在那里声明了&#xff1f;谁拥有代理属性就在那里声明&#xff0c;所以代码就是这…

离群点检测算法-基础概念

定义&#xff1a; Hawkins给出的离群点的本质性定义&#xff1a;离群点是数据集中偏离大部分数据的数据&#xff0c;由于偏离其它数据太多&#xff0c;使人怀疑这些数据的偏离并非由随机因素产生&#xff0c;而是产生于完全不同的机制。 大致分类&#xff1a; 一例分析步骤&am…

Windows下搭建PHP开发环境

PHP集成开发环境有很多&#xff0c;如XAMPP、AppServ......只要一键安装就把PHP环境给搭建好了。但这种安装方式不够灵活&#xff0c;软件的自由组合不方便&#xff0c;同时也不利于学习。所以我还是喜欢手工搭建PHP开发环境&#xff0c;需要哪个模块自己安装就行了&#xff0c…