用boundschecker检查出来了一点结果,请问以下三段程序存在资源(RESOURCE)泄漏吗?---->>是boundschecker定位泄露的语句。
1、
---->>HANDLE hSem = CreateSemaphore (NULL, 1, 1, "OnlyOneForeload");
if (hSem != NULL && GetLastError() == ERROR_ALREADY_EXISTS)
{
CloseHandle (hSem); HWND hwnd = FindWindow (VQCGUI_CLASS, NULL);
BringWindowToTop (hwnd);
ShowWindow (hwnd, SW_SHOWMAXIMIZED); return TRUE;
}
2、m_lstEventType是一个CLISTBOX,m_ListBoxRectType是CRECT,m_hbListBoxType是HBITMAP都是类变量 m_lstEventType.GetClientRect(&m_ListBoxRectType);
m_lstEventType.m_bmp.LoadBitmap(IDB_BKCLIENT);
HBITMAP htempbmp;
m_hbListBoxType = (HBITMAP )m_lstEventType.m_bmp.Detach();
htempbmp = ::GetSizeBITMAP(m_hbListBoxType , m_ListBoxRectType.right, m_ListBoxRectType.bottom);
m_lstEventType.m_bmp.Attach(htempbmp); 3、
HBITMAP GetSizeBITMAP(HBITMAP hBitmap, int w, int h)
{
CDC sourceDC, destDC;
sourceDC.CreateCompatibleDC( NULL );
destDC.CreateCompatibleDC( NULL );
BITMAP bm;
::GetObject( hBitmap, sizeof( bm ), &bm );
---->> HBITMAP hbmResult = ::CreateCompatibleBitmap(CClientDC(NULL), w, h);
HBITMAP hbmOldSource = (HBITMAP)::SelectObject( sourceDC.m_hDC, hBitmap );
HBITMAP hbmOldDest = (HBITMAP)::SelectObject( destDC.m_hDC, hbmResult );
destDC.BitBlt(0, 0, w, h, &sourceDC, 0, 0, SRCCOPY );
::SelectObject( sourceDC.m_hDC, hbmOldSource );
::SelectObject( destDC.m_hDC, hbmOldDest );
sourceDC.DeleteDC();
destDC.DeleteDC();
return hbmResult;
}
hbmResult是返回值,在返回函数里用::DeleteObject(hbmResult);也释放了。
1、
---->>HANDLE hSem = CreateSemaphore (NULL, 1, 1, "OnlyOneForeload");
if (hSem != NULL && GetLastError() == ERROR_ALREADY_EXISTS)
{
CloseHandle (hSem); HWND hwnd = FindWindow (VQCGUI_CLASS, NULL);
BringWindowToTop (hwnd);
ShowWindow (hwnd, SW_SHOWMAXIMIZED); return TRUE;
}
2、m_lstEventType是一个CLISTBOX,m_ListBoxRectType是CRECT,m_hbListBoxType是HBITMAP都是类变量 m_lstEventType.GetClientRect(&m_ListBoxRectType);
m_lstEventType.m_bmp.LoadBitmap(IDB_BKCLIENT);
HBITMAP htempbmp;
m_hbListBoxType = (HBITMAP )m_lstEventType.m_bmp.Detach();
htempbmp = ::GetSizeBITMAP(m_hbListBoxType , m_ListBoxRectType.right, m_ListBoxRectType.bottom);
m_lstEventType.m_bmp.Attach(htempbmp); 3、
HBITMAP GetSizeBITMAP(HBITMAP hBitmap, int w, int h)
{
CDC sourceDC, destDC;
sourceDC.CreateCompatibleDC( NULL );
destDC.CreateCompatibleDC( NULL );
BITMAP bm;
::GetObject( hBitmap, sizeof( bm ), &bm );
---->> HBITMAP hbmResult = ::CreateCompatibleBitmap(CClientDC(NULL), w, h);
HBITMAP hbmOldSource = (HBITMAP)::SelectObject( sourceDC.m_hDC, hBitmap );
HBITMAP hbmOldDest = (HBITMAP)::SelectObject( destDC.m_hDC, hbmResult );
destDC.BitBlt(0, 0, w, h, &sourceDC, 0, 0, SRCCOPY );
::SelectObject( sourceDC.m_hDC, hbmOldSource );
::SelectObject( destDC.m_hDC, hbmOldDest );
sourceDC.DeleteDC();
destDC.DeleteDC();
return hbmResult;
}
hbmResult是返回值,在返回函数里用::DeleteObject(hbmResult);也释放了。
解决方案 »
- Treectrl 为什么在给子节点添加图标时,它的父节点也自动有了图标?
- 不确定一个文件多长的情况下,如何将文件增大到指定大小(填0)又不损坏原有的数据?(不用MFC,用标准库做)
- 关于利用calss String来实现统计键盘输入的英文单词中元音字母,但有点问题,请大家帮忙!
- 为什么DB2 的"VC附件工具"在我的VC6.0中用不了???请指点
- 怎样测试已经正确连接到数据库了?
- 数据库访问
- 怎么做VC的安装程序?
- const的用法?
- 谁知道哪有BBS的COM源代码下载?
- Windows(VC)结构大全
- 有关内存泄露得问题,最终解决再加200分,感谢各位高手得鼎立指教!!
- 有关定时刷新得问题?????
比如
{ char* p=new char[20];
...
}
//到了这里,如过p 没有释放,那就是内存泄漏(假如这段内存没有其他用途)
2、内存泄漏是指针的引用不能访问
造成一个Block区的内存不能访问