在开发的应用程序中,关于节省和释放内存资源应注意那些问题?
比如绘图时应注意的问题,
合理建立数组等方面问题
及其解决方法
问题点数:30、回复次数:4Top
1 楼iProgram(na)回复于 2001-03-11 12:10:00 得分 0
careTop
2 楼edyang(化石)回复于 2001-03-11 12:37:00 得分 20
开发文当中有一篇关于资源释放的文章,可能不太好找,就是下面的:
Resource Allocation Routine Cleanup Routine Cleanup Required?
================================================================================
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:
------
* 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.
Top
3 楼farland()回复于 2001-03-11 16:23:00 得分 10
绘图时使用了设备上下文对象,注意随时释放(查msdn)。
对于数组使用,动态创建时避免造成“内存碎片”,分配大小时按某一常数的倍数分配。
Top
4 楼ddddh(叶君临)回复于 2001-03-11 16:52:00 得分 0
总而言之, 要小心使用.
申请之后一定要释放, 同时尽量不要少吃多餐, 反过来比较好:)Top
相关问题
- 怎样释放mdi主应用程序的内存??
- JAVA应用程序的内存释放问题????????
- 我们编写应用程序完成以后,如何监视应用程序使用的内存是否完全释放。
- Form窗体关闭了,但是应用程序内存未释放,怎么办(在线等待,马上给分)
- 请问:在DSHOW应用程序中,内存的分配、释放是怎么实现的?是不是销毁了filter graph,内存就释放了啊????????
- 求救!我在DLL里申请的一块内存,为什么在应用程序里释放就会报异常错误???
- 请问在VB中如何彻底的结束应用程序,在按退出或关闭按钮时该程序结束并释放内存?
- 应用程序在退出后仍然在内存中?
- Access数据库应用程序的内存不足问题
- 如何在多个应用程序之间共享内存?




