对开发中常见的内存泄露,GDI泄露进行检测

使用GDIView工具排查GDI对象泄漏导致程序UI界面绘制异常的问题 详细讲述如何使用GDIView工具排查GDI对象泄漏导致程序UI界面绘制异常的问题 阅读详情

对开发中常见的内存泄露,GDI泄露进行检测

一、GDI泄露检测方法:

在软件测试阶段,可以通过procexp.exe 工具,或是通过任务管理器中选择GDI对象来查看软件GDI的对象是使用情况。

注意点:Create出来的GDI对象,都要用DeleteObject来释放;Create出来的DC,都要用DeleteDC来释放,GetDC得出的DC,要用ReleaseDC来释放。

 

以下是一些常用到的函数:

 

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

2、  检测GetDC();后面是否有ReleaseDC();

 

3、  检测画刷CBrush:

CreateSolidBrush()-》 DeleteObject();

 

4、  检测画笔 CPen

CreatePen()->DeleteObject();

 

5、  检测创建字体CFont

CreateFont->DeleteObject();

CreatePointFont()->DeleteObject();

 

6、  检测 创建WIN32窗口

HWND hwnd = ::CreateWindow ()  ->  DestroyWindow(hwnd);

 

7、  CBitmapbmp;
bmp.CreateCompatibleBitmap(&dc, rcClient.Width(), rcClient.Height());

 后面要有bmp.DeleteObject();

 

8、  CFont *pOldFont =pDC->SelectObject(&m_font);

是否有pDC->SelectObject(pOldFont);

 

9、  CRgn

CreateRoundRectRgn() ->  DeleteObject();

 

10、Graphics gc(pDC)   -> gc.ReleaseDC(pDC);

 

11、CDialog对话框  Create() 出来的,需要有  DestroyWindow();

 

12、凡是通过函数得到句柄的都需要用CloseHandle(句柄)来释放;

如:HANDLE, HBRUSH ,HPEN

 HANDLE hFile = CreateFile();  -> CloseHandle(hFile);

 

 

二、内存的检测方法:

通过任务管理器中的“内存”列表,或是procexp.exe来观察是否出现内存泄露

1、检查下列函数是否有一一对应:

      new   -> delete;

     Malloc -> free;

     GlobalAlloc  -> GlobalFree

 

 

2、通过调试器和CRT调试堆来检测泄露

把这个语句放到软件的结束部分_CrtDumpMemoryLeaks(); 在调试下运行程序时,如果有泄漏,就会在输出窗口显示内存泄露信息。

 

3、借助内存泄露检测工具如:BChecker6.01 这个是适合VC6的,有时间可以去下来使用。

使用GDIView工具解决程序UI界面绘制异常问题 程序中的UI界面绘制异常是常见的问题之一,通常由于GDI对象泄漏导致。通过修改相关的代码,我们可以消除UI界面绘制异常,并确保程序的正常运行。在GDIView工具的主窗口中,我们将看到目标程序所使用的所有GDI对象的列表。通过双击相应的GDI对象,我们可以查看它们的调用堆栈信息,以便更准确地定位到导致泄漏的代码段。通过使用GDIView,我们可以检测到未释放的GDI对象,并进一步定位到导致UI界面绘制异常的代码段。在GDIView工具的界面中,我们可以看到当前运行的所有进程的列表。 阅读详情

相关推荐

使用GDIView工具解决GDI对象泄漏问题

在开发使用GDI的应用程序时,可能会遇到GDI对象泄漏的问题,即创建的GDI对象没有正确释放,导致系统资源浪费和性能下降。GDIView是一款免费的Windows工具,可以监视和显示当前系统中的GDI对象,并提供详细的信息,如对象句柄、进程ID、对象类型等。通过使用GDIView,我们可以追踪应用程序中创建的GDI对象,并找出未被释放的对象。需要注意的是,GDIView只是一种辅助工具,它可以帮助我们发现GDI对象泄漏的问题,但它本身并不能解决泄漏问题。的调用,以便释放创建的画刷对象。

JfBackend的博客 382

GDI对象泄漏问题排查分析

GDI objectBitmapBrushDCCreateDCFontMemory DCDeleteDCMetafilePaletteRegion//...如果我们平时忘记调用的时候,就会造成GDI对象被泄漏。GDI对象作为一个Windows的内存资源,也占用其内存空间,并且需要用户自动管理和释放;为了降低GDI对象的资源泄漏,我们可以使用智能指针来管理GDI对象句柄。程序崩溃。UI资源显示异常。程序运行缓慢。

xsinlink的博客 2882

GDI资源泄露检测与管理工具深入解析

GDI(Graphical Device Interface)对象,即图形设备接口对象,是Windows操作系统中用于提供设备无关的图形输出的核心组件。GDI对象使得应用程序能够不关心物理输出设备的具体细节,通过统一的API进行图形绘制。这些对象包括但不限于画笔(Pen)、画刷(Brush)、字体(Font)、位图(Bitmap)、区域(Region)等,每种对象在图形输出过程中担当不同角色。GDI对象在创建后必须在使用完毕后销毁,以释放系统资源。如果GDI对象未能正确销毁,就会导致资源泄露。

weixin_42515842的博客 943

GDIView

检测gdi泄漏工具:GDIView windows客户端程序性能测试必须要验证资源泄漏,资源泄漏常见的测试项有:cpu/内存/GDI/句柄/页面错误增量,今天的主题是GDI,测试GDI泄漏最简单最常用的工具是任务管理器,今天介绍的是另一个工具GDIView,GDIView是更强大的测试GDI泄漏的工具。 GDI概念扫盲 GDI:图形设备接口(Graphics Device Interface),主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出,如菜单、滚动条、图标和鼠标

dujunjie2008的专栏 1620

GdiLeakDetector GDI资源及内存检测工具

Windows下,资源检测工具,可以帮助查找内存和资源泄漏问题

GDI 内存泄露检测工具

windows客户端程序性能测试必须要验证资源泄漏,资源泄漏常见的测试项有:cpu/内存/GDI/句柄/页面错误增量

Net资源泄露(内存泄露,GDI泄露,handle 泄露等)的终极解决方案

摘要   本文主要讨论了,什么是.Net内存泄露?如何确定是发生了内存泄露?如何预防内存泄露的发生?正文  1.dot Net内存泄露简介    可能很多.Net的用户(甚至包括一些dot Net开发者)对Net的内存泄露不是很了解,甚至会说.Net不存在内存泄露,因为“不是有GC机制吗?”----恩,是有这

老桥的技术家园 1万+

GDI对象查看工具(排查GDI对象泄露)GDIView.zip

GDIView是查看进程GDI对象占用明细的,是排查GDI对象泄露的利器!

内存泄露整理

对开发中常见的内存泄露,GDI泄露进行检测 一、GDI泄露检测方法: 在软件测试阶段,可以通过procexp.exe 工具,或是通过任务管理器中选择GDI对象来查看软件GDI的对象是使用情况。 注意点:Create出来的GDI对象,都要用DeleteObject来释放;Create出来的DC,都要用DeleteDC来释放,GetDC得出的DC,要用ReleaseDC来释放。

wajh07的专栏 2950

GDIView检测工具

检测gdi泄漏工具:GDIView windows客户端程序性能测试必须要验证资源泄漏,资源泄漏常见的测试项有:cpu/内存/GDI/句柄/页面错误增量,今天的主题是GDI,测试GDI泄漏最简单最常用的工具是任务管理器,今天介绍的是另一个工具GDIView,GDIView是更强大的测试GDI泄漏的工具。

从零开始做题:big_zip

内容为:You_know_the_bed_feels_warmer_Sleeping_here_alone_You_know_I_dream_in_color_And_do_the_things_I_want_You_think_you_got_the_best_of_me_Think_you_had_the_last_laugh_Bet_you_think_that_everything_good_is_gone。查看压缩包内容,发现有五字节长度的文件,用crc碰撞攻击破解明文。

weixin_44626085的博客 1242

VC++检测和解决GDI泄漏问题

GDI对象是Windows系统中执行绘图操作中要到的,常见的GDI对象有Bitmap位图对象、Brush画刷对象、Pen笔对象、Font字体对象、Region区域对象、DC对象,通过操作这些对象就可以完成绘图操作。

m0_60352504的博客 1094

从零开始:如何用大语言模型构建你的第一个路径规划智能体

本文详细介绍了如何利用大语言模型(LLM)构建路径规划智能体,从基础概念到实战案例,涵盖TSP和CVRP问题的解决方案。通过选择合适的LLM模型、设计有效的提示工程和实现自我验证,即使没有运筹学背景也能快速上手。文章还提供了部署与优化智能体的实用技巧,帮助读者在物流配送、机器人导航等领域应用这一技术。

weixin_28256233的博客 488

DeleakerSetup_2021.1.0.0:高效内存泄露检测工具推荐

DeleakerSetup_2021.1.0.0:高效内存泄露检测工具推荐 【下载地址】DeleakerSetup_2021.1.0.0-强大的内存泄露检测工具 DeleakerSetup_2021.1.0.0 是一款高效的内存泄露检测工具,专为软件开发者设计。它能够无缝集成到Visual Studio这样的集成开发环境...

gitblog_09772的博客 841

liquibase介绍

1、Liquibase还是Flyway Flyway和Liquibase都支持专业数据库重构和版本控制所需的所有功能,因此您将始终知道要处理的数据库模式的版本以及它是否与软件版本匹配。两种工具都集成在Maven或Gradle构建脚本中以及Spring Boot生态系统中,因此您可以完全自动化数据库重构。 Flyway使用SQL定义数据库更改,因此您可以定制SQL脚本,使其与基础数据库技术(例如Oracle或PostgreSQL)良好地配合使用。另一方面,使用Liquibase,您可以通过使用XML,YA

赶路人儿 7534

Ollama模型路径迁移实战:Windows/Mac/Linux三系统保姆级教程(附常见问题排查)

本文提供了一份详细的Ollama模型路径迁移教程,涵盖Windows、macOS和Linux三大操作系统。针对默认安装路径占用系统盘空间的问题,文章指导用户如何安全移动模型文件、配置环境变量、重启服务,并附有迁移后的验证步骤与常见问题排查方法,帮助用户高效管理本地AI模型存储。

gray5的博客 543

【MFC】GDI如何释放资源

转载博客链接:https://blog.csdn.net/lin_angle/article/details/6603572 对开发中常见的内存泄露,GDI泄露进行检测 一、GDI泄露检测方法: 在软件测试阶段,可以通过procexp.exe 工具,或是通过任务管理器中选择GDI对象来查看软件GDI的对象是使用情况。 注意点:Create出来的GDI对象,都要用DeleteObject来释放;Create出来的DC,都要用DeleteDC来释放,GetDC得出的DC,要用ReleaseDC来释放。 以下是一

UniverseLin的博客 1744

国家大地2000坐标系投影坐标转高德地图经纬度坐标-【高斯投影坐标】

国家大地2000坐标系投影坐标转换成高德经纬度坐标显示画图。

devil_zhuzhu的博客 1万+

GDI泄露检测

前一段在一个仿QQ的IM通讯工具中加入屏幕截图以及截图编辑功能,但是测试中发现当连续进行几十次截图后,系统会出现白屏,开始以为和win7经常闪白有关,屏幕截图截取到闪白的瞬间导致白屏,后来发现是GDI内存不足,申请不到GDI内存贴图失败所致。于是找了GDI泄露的工具,对程序进行GDI内存检测,下面就介绍两款GDI泄露检测工具的用法以及GDI编程的一些注意事项。 第一款:GDIndicator 支...

SurpassLi的专栏 88

搭建微信机器人的方案都在这了!

功能超级强大,虽不支持二次开发,但已有的功能足够个人使用,可惜官方作品已被腾讯告死,好在市面上还流落着不少破解版,有需要的自行搜索。可惜的是,微信官方已不准许新的微信号再使用 web 登录,这就直接从源头扼杀了 web 协议的微信机器人,虽说老的微信号还是能凑合着用,不过部分功能也受限。所以,这些都属于 PC 端的微信机器人。无论是 PC 端还是手机端,用 hook 方式实现的最大缺点就是要和某一个版本的微信客户端进行绑定,如果框架本身不对最新版本的微信适配,那使用的时候就无法升级到最新版本的微信。

weixin_47246330的博客 1万+

09 SAP CPI 访问公共API接口

我在网上找了一个公共API,入参输入汉字返回拼音。至此,一个真正的访问API的接口就做好了。点击保存时可看到红叉报错。

SAP CPI 477
上一篇: 在CDHTMLDialog中扩展浏览器脚本以及在HTML中增加MFC消息响应
下一篇: 堆栈,堆栈,堆和栈的区别
海浪
博客等级 码龄20年 27粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值