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

    技术2022-05-11  108

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


    最新回复(0)