Win32 API资源分配释放速查

转载 2007年09月23日 21:19:00

                      

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

Netty学习之旅----源码分析内存分配与释放原理

Netty内存的组织,主要由PoolArena、PoolChunk、PoolSubpage,当然再加上线程本地分配(下个专题单独分析),在这里真正持有内存的单元是PoolChunk,俗称块内存,Poo...
  • prestigeding
  • prestigeding
  • 2017年01月23日 11:29
  • 1305

线程终止资源清理方式

Posix线程终止的两种情况 线程终止时的清理 线程终止的同步及其返回值 关于pthread_exit 和return 1.Posix线程终止的两种情况。  包括正常终止和非正常终止。线程主动调用pt...
  • XscKernel
  • XscKernel
  • 2015年08月18日 18:21
  • 1367

重温WIN32 API ------ 窗口上绘制位图文件

1 基本思路做界面仿真时,经常需要在窗口上贴图,随着图片数量的增多,通过资源文件中添加位图的方式会变得越来越不可控。所以本着“资源与程序分离“的原则,还是使用外部位图文件更加清晰明了。那么如何管理位图...
  • smstong
  • smstong
  • 2014年12月22日 18:49
  • 4429

win32SDK中使用图片的api

Win32SDK.h [cpp] view plaincopy #pragma once   #include    #include    #inc...
  • sun___shine
  • sun___shine
  • 2015年10月20日 17:11
  • 858

Win32 API编程简介Demo程序

Windows编程的方法主要有两种方法,                     传统编写法:利用API函数;                     交互式方法:利用MFC类库。        ...
  • markmin214
  • markmin214
  • 2013年03月29日 11:25
  • 1846

Win32 API 窗口编程模板

#include //窗口函数声明 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM );    //入口函数 WinMain...
  • fanhenghui
  • fanhenghui
  • 2016年10月22日 17:26
  • 674

Win32程序资源的使用

作为一个可执行的应用程序文件,应该包含2部分,一部分是数据区,另一部分是程序代码区。数据区一般可分为2类:读写数据和只读数据。对于windows程序,有大量的只读数据。所谓资源就是应用程序运行期间通常...
  • q__y__L
  • q__y__L
  • 2016年05月18日 20:23
  • 1504

重温WIN32 API ------ 最简单的Windows窗口封装类

如果你也厌倦了复杂的MFC,这里提供了一个非常简单的把C++类、对象与窗口类、对象联系起来的方式。...
  • smstong
  • smstong
  • 2015年01月04日 17:14
  • 11407

[VC++]释放资源文件

VC++程序中,有时会需要包含有各种各样的资源文件,比如图标、图片还有一些其它的资源文件,如何将这些资源文件导出呢?为了方便,我写了一个函数: /* 函数功能:释放资源文件 参数说明:DWOR...
  • sonsie007
  • sonsie007
  • 2013年04月22日 22:54
  • 1240

建议52:及时释放资源

建议52:及时释放资源 垃圾回收机制自动为我们隐式地回收了资源(垃圾回收器会自动调用终结器),那我们为什么要主动释放资源呢? private void buttonOpen_Click...
  • houwc
  • houwc
  • 2016年09月06日 20:02
  • 230
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Win32 API资源分配释放速查
举报原因:
原因补充:

(最多只允许输入30个字)