Win32 API資源分配釋放速查,防止程式碼資源洩露 (轉)

worldblog發表於2007-12-03
Win32 API資源分配釋放速查,防止程式碼資源洩露 (轉)[@more@] 

下面為某次瀏覽找到的資源的分配清除文件,只簡單的翻譯了幾個文字。該

文件對防止資源洩露有很大幫助。抱歉一貼上就串了。

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

資源    分配    清除函式    需要手動清除?

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

 :namespace prefix = o ns = "urn:schemas--com::office" />

Accelerators    LoadAccelerators     N/A  No

 

Atoms      GlobalAddAtom      GlobalFreeAtom  Yes

 

Bitmaps    CreateBitmap      Delete     Yes *

  CreateBitmndirect      DeleteObject     Yes *

   CreateCompatibleBitmap    DeleteObject      Yes *

  CreateDIBitmap    DeleteObject   Yes *

  CreateDiscardableBitmap      DeleteObject    Yes *

  Loaitmap    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

   AddFontRe    RemoveFontResource    Yes

 

GDI Stock Obj    GetStockObject    N/A  No  &

 

Hook    SetHook    UnhookWindowsHook  Yes

 

IC  CreateIC    DeleteDC   Yes

 

Icon  CreateIcon    DestroyIcon  Yes

  LoadIcon    N/A  No

 

Library    LoadLibrary    FreeLibrary  Yes

 

Memory  AllocDStoCSAlias    Freeor  Yes

  AllocSelector      FreeSelector  Yes

  GlobalAlloc    GlobalFree  No

  GlobalDOSAlloc    GlobalDOr  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(內定資源)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-987688/,如需轉載,請註明出處,否則將追究法律責任。

相關文章