Win32 API资源分配释放速查,防止代码资源泄露

王朝vc·作者佚名  2006-01-08
宽屏版  字体: |||超大  

下面为某次浏览找到的Win32资源的分配清除文档,只简单的翻译了几个文字。该

文档对防止资源泄露有很大帮助。抱歉一贴上就串了。

***********************************************************************

资源 分配函数 清除函数 需要手动清除?

======================================================================

Accelerators LoadAccelerators N/A No

Atoms GlobalAddAtom GlobalFreeAtom Yes

Bitmaps CreateBitmap DeleteObject Yes *

CreateBitmapIndirect DeleteObject Yes *

CreateCompatibleBitmap DeleteObject Yes *

CreateDIBitmap DeleteObject Yes *

CreateDiscardableBitmap DeleteObject Yes *

LoadBitmap DeleteObject Yes *

Brushes CreateBrushIndirect DeleteObject Yes

CreateDIBPatternBrush DeleteObject Yes

CreateHatchBrush DeleteObject Yes

CreatePatternBrush DeleteObject Yes

CreateSolidBrush DeleteObject Yes

Carets CreateCaret DestroyCaret No #

Clipboard OpenClipboard CloseClipboard Yes

Comms Ports OpenComm CloseComm Yes

Cursor CreateCursor DestroyCursor Yes

LoadCursor N/A No

DC CreateDC DeleteDC Yes

CreateCompatibleDC DeleteDC Yes @

GetDC ReleaseDC Yes

GetWindowDC ReleaseDC Yes

BeginPaint EndPaint Yes

Dialog Box CreateDialog DestroyWindow No

CreateDialogIndirect DestroyWindow No

CreateDialogIndirectParam DestroyWindow No

CreateDialogParam DestroyWindow No

File OpenFile _lclose No

Fonts CreateFont DeleteObject Yes

CreateFontIndirect DeleteObject Yes

AddFontResource RemoveFontResource Yes

GDI Stock Obj GetStockObject N/A No &

Hook SetWindowsHook UnhookWindowsHook Yes

IC CreateIC DeleteDC Yes

Icon CreateIcon DestroyIcon Yes

LoadIcon N/A No

Library LoadLibrary FreeLibrary Yes

Memory AllocDStoCSAlias FreeSelector Yes

AllocSelector FreeSelector Yes

GlobalAlloc GlobalFree No

GlobalDOSAlloc GlobalDOSFr No

GlobalFix GlobalUnfix No

GlobalLock GlobalUnlock No

GlobalPageLock GlobalPageUnlock No

GlobalRealloc GlobalFree No

GlobalWire GlobalUnwire No

LocalAlloc LocalFree No

LocalLock LocalUnlock No

LocalRealloc LocalFree No

Menu CreateMenu DestroyMenu No %

CreatePopupMenu DestroyMenu No %

LoadMenu DestroyMenu No %

LoadMenuIndirect DestroyMenu No %

GetSystemMenu N/A No

MetaFile CreateMetaFile DeleteMetaFile Yes

Palette CreatePalette DeleteObject Yes

Pen CreatePen DeleteObject Yes

CreatePenIndirect DeleteObject Yes

Regions CreateEllipticRgn DeleteObject Yes

CreateEllipticRgnIndirect DeleteObject Yes

CreatePolygonRgn DeleteObject Yes

CreatePolyPolygonRgn DeleteObject Yes

CreateRectRgn DeleteObject Yes

CreateRectRgnIndirect DeleteObject Yes

CreateRoundRectRgn DeleteObject Yes

Resource AllocResource FreeResource No

FindResource N/A No

LoadResource FreeResource No

LockResource UnlockResource No

Sound OpenSound CloseSound Yes

String LoadString N/A No

Thunk MakeProcInstance FreeProcInstance No

Timer SetTimer KillTimer No

Window CreateWindow DestroyWindow No

CreateWindowEx DestroyWindow No

Notes:

------

* 位图资源在释放的时候必须从选中它的DC中脱离。

% 当菜单失去焦点和窗口不再关联或者应用程序结束的时候占用资源必须被释放。

@ DC被释放前必须和它关联(选中)的位图取消联系

# 如果脱字符指定了位图,位图必须被释放

& 对DeleteObject的调用不会销毁常规的StockObject(系统内定资源)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有