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

类别:VC语言 点击:0 评论:0 推荐:
 

下面为某次浏览找到的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(系统内定资源)

本文地址:http://com.8s8s.com/it/it4023.htm