这段代码哪边需要释放啊?有内存泄露,如何释放
try
{ if(pDC==NULL)
return;
Graphics g(pDC->m_hDC);
//图的坐标(含外框)
CRect rt;
pDC->GetWindow()->GetClientRect(&rt);
GraphT=rt.top+MarginGraphT;
GraphB=rt.bottom-MarginGraphB;
GraphL=rt.left+MarginGraphL;
GraphR=rt.right-MarginGraphR;
//计算区域(不含外框)
xSrc=GraphL+MarginL;
ySrc=GraphB-MarginB;
xWidth=(GraphR-MarginR)-(GraphL+MarginL);
yHeight=(GraphB-MarginB)-(GraphT+MarginT);
Bitmap bmp(rt.Width(),rt.Height());
DrawAxis(&bmp,GraphType);
//画下面的三个颜色示例
if(GraphType==0)
{
DrawLegend(&bmp);
}
if(DataCount!=0)
{
//画图
switch(GraphType)
{
case 0:
//画线
DrawLineChart(&bmp);
break;
case 1:
DrawBarChart(&bmp);
break;
case 2:
DrawLineChartByPos(&bmp);
default:
break;
}
}
//g.DrawImage(&bmp,0,0,GraphR-GraphL+100,GraphB-GraphT+100);
HBITMAP hbmp;
bmp.GetHBITMAP(Color(255, 255,255, 255),&hbmp);
CBitmap *pbmp=CBitmap::FromHandle(hbmp);
if(!pbmp)
{
exit(0);
}
BITMAP bmpInfo;
pbmp->GetBitmap(&bmpInfo);
CDC dcMemory;
dcMemory.CreateCompatibleDC(pDC);
CBitmap* pOldBitmap = dcMemory.SelectObject(pbmp);
pDC->BitBlt(0,0,bmpInfo.bmWidth,bmpInfo.bmHeight, &dcMemory, 0, 0, SRCCOPY);
pbmp->DeleteObject();
dcMemory.SelectObject(pOldBitmap);
}
catch(...)
{
}
Locked=false;
相关推荐
详解Java内存泄露的示例代码
通过一个Demo来简要介绍下ThreadLocal和ClassLoader导致内存泄露最终OutOfMemory的场景。下面通过示例代码给大家分享Java内存泄露的相关知识,感兴趣的朋友一起看看吧
GDB查找内存泄露
后台程序中经常会存在一部分内存泄露,但是不能很好的定位造成内存泄露的代码,并进行修改,内存泄露不进行修改就会造成程序运行时占用的内存不断升高,逐渐的导致系统的不稳定,现将前一段时间通过GDB调试工具查找内存泄露的方法形成文档以便后续如果发现程序内存泄露能够方便的进行查找修改程序,使程序能够恢复到稳定,健壮运行.
检查堆内存 踩内存,内存重复释放 内存泄露的小程序
功能说明: 检查堆内存的问题,定位到文件,行数 1. 踩内存 2. 内存重复释放 3. 内存泄露 使用方法用 dbg_malloc, dbg_free 替换原程序中的malloc, free. 适当的时候调用dbg_memory_check 以检查内存泄露。 原理: 在申请的内存前后添加 隔离带,并做记录。在free, dbg_memory_check中检查踩内存。在free中检查重复释放。 假设要申请的为 size ,则实际申请的为 size + gap_size (前后隔离带的大小) GAP_BEGIN | size | GAP_END PS: 此文件可酌情修改,以适应不同的设备,平台等。 多线程情况下,请对dbg_malloc_ dbg_free_ dbg_memory_check 加锁
Linux 内存泄露查找
linux 内存泄露排查文档。 介绍mtrace的使用。根据实际问题介绍如果定位问题。
内存泄露Demo leaky app
内存泄露Demo leaky app


