开发文当中有一篇关于资源释放的文章,可能不太好找,就是下面的:Resource Allocation Routine Cleanup Routine Cleanup Required?
================================================================================Accelerators LoadAccelerators N/A NoAtoms GlobalAddAtom GlobalFreeAtom YesBitmaps 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 YesCarets CreateCaret DestroyCaret No #Clipboard OpenClipboard CloseClipboard YesComms Ports OpenComm CloseComm YesCursor CreateCursor DestroyCursor Yes
LoadCursor N/A NoDC CreateDC DeleteDC Yes
CreateCompatibleDC DeleteDC Yes @
GetDC ReleaseDC Yes
GetWindowDC ReleaseDC Yes
BeginPaint EndPaint YesDialog Box CreateDialog DestroyWindow No
CreateDialogIndirect DestroyWindow No
CreateDialogIndirectParam DestroyWindow No
CreateDialogParam DestroyWindow NoFile OpenFile _lclose NoFonts CreateFont DeleteObject Yes
CreateFontIndirect DeleteObject Yes
AddFontResource RemoveFontResource YesGDI Stock Obj GetStockObject N/A No &Hook SetWindowsHook UnhookWindowsHook YesIC CreateIC DeleteDC YesIcon CreateIcon DestroyIcon Yes
LoadIcon N/A NoLibrary LoadLibrary FreeLibrary YesMemory 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 NoMenu CreateMenu DestroyMenu No %
CreatePopupMenu DestroyMenu No %
LoadMenu DestroyMenu No %
LoadMenuIndirect DestroyMenu No %
GetSystemMenu N/A NoMetaFile CreateMetaFile DeleteMetaFile YesPalette CreatePalette DeleteObject YesPen CreatePen DeleteObject Yes
CreatePenIndirect DeleteObject YesRegions CreateEllipticRgn DeleteObject Yes
CreateEllipticRgnIndirect DeleteObject Yes
CreatePolygonRgn DeleteObject Yes
CreatePolyPolygonRgn DeleteObject Yes
CreateRectRgn DeleteObject Yes
CreateRectRgnIndirect DeleteObject Yes
CreateRoundRectRgn DeleteObject YesResource AllocResource FreeResource No
FindResource N/A No
LoadResource FreeResource No
LockResource UnlockResource NoSound OpenSound CloseSound YesString LoadString N/A NoThunk MakeProcInstance FreeProcInstance NoTimer SetTimer KillTimer NoWindow CreateWindow DestroyWindow No
CreateWindowEx DestroyWindow No
Notes:
------
* Bitmaps must be disconnected from a DC before being freed.
% Menus must be freed before an application exits if the menu is not
connected to any window.
@ A DC must be disconnected from bitmaps before being freed.
# If a bitmap is specified for the Caret, it must be freed.
& Calls to DeleteObject do not harm stock objects.
================================================================================Accelerators LoadAccelerators N/A NoAtoms GlobalAddAtom GlobalFreeAtom YesBitmaps 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 YesCarets CreateCaret DestroyCaret No #Clipboard OpenClipboard CloseClipboard YesComms Ports OpenComm CloseComm YesCursor CreateCursor DestroyCursor Yes
LoadCursor N/A NoDC CreateDC DeleteDC Yes
CreateCompatibleDC DeleteDC Yes @
GetDC ReleaseDC Yes
GetWindowDC ReleaseDC Yes
BeginPaint EndPaint YesDialog Box CreateDialog DestroyWindow No
CreateDialogIndirect DestroyWindow No
CreateDialogIndirectParam DestroyWindow No
CreateDialogParam DestroyWindow NoFile OpenFile _lclose NoFonts CreateFont DeleteObject Yes
CreateFontIndirect DeleteObject Yes
AddFontResource RemoveFontResource YesGDI Stock Obj GetStockObject N/A No &Hook SetWindowsHook UnhookWindowsHook YesIC CreateIC DeleteDC YesIcon CreateIcon DestroyIcon Yes
LoadIcon N/A NoLibrary LoadLibrary FreeLibrary YesMemory 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 NoMenu CreateMenu DestroyMenu No %
CreatePopupMenu DestroyMenu No %
LoadMenu DestroyMenu No %
LoadMenuIndirect DestroyMenu No %
GetSystemMenu N/A NoMetaFile CreateMetaFile DeleteMetaFile YesPalette CreatePalette DeleteObject YesPen CreatePen DeleteObject Yes
CreatePenIndirect DeleteObject YesRegions CreateEllipticRgn DeleteObject Yes
CreateEllipticRgnIndirect DeleteObject Yes
CreatePolygonRgn DeleteObject Yes
CreatePolyPolygonRgn DeleteObject Yes
CreateRectRgn DeleteObject Yes
CreateRectRgnIndirect DeleteObject Yes
CreateRoundRectRgn DeleteObject YesResource AllocResource FreeResource No
FindResource N/A No
LoadResource FreeResource No
LockResource UnlockResource NoSound OpenSound CloseSound YesString LoadString N/A NoThunk MakeProcInstance FreeProcInstance NoTimer SetTimer KillTimer NoWindow CreateWindow DestroyWindow No
CreateWindowEx DestroyWindow No
Notes:
------
* Bitmaps must be disconnected from a DC before being freed.
% Menus must be freed before an application exits if the menu is not
connected to any window.
@ A DC must be disconnected from bitmaps before being freed.
# If a bitmap is specified for the Caret, it must be freed.
& Calls to DeleteObject do not harm stock objects.
对于数组使用,动态创建时避免造成“内存碎片”,分配大小时按某一常数的倍数分配。