释放内存总结

来源:互联网 发布:免费国外PHP模板 编辑:程序博客网 时间:2024/05/16 01:44

1. 用new/malloc显式分配在堆上的内存才需要用delete/free释放,而在栈上分配的如int   array[80]在子程序结束时自动释放,分配与释放都和数据类型无关。

2. delete一个指针的时候 一定要检查是否为null,否则是个严重的应用程序错误.
3.释放一个数组要用delete []

4.类对象使用结束后将其delete,不delete的话,当程序退出的时候,内存都会被系统释放,不会有内存泄漏的问题. 
内存泄漏说的是 长时间运行的程序(几年几月),如果不管理好你的内存,到时候会无内存可用.???

 

附:摘抄一个析构函数注释

CMyPoint::~CMyPoint() { //析构函数
//delete一个指针的时候 一定要检查是否为null,否则是个严重的应用程序错误.
//由于m_pName是用new 产生的空间  所以需要 delete来释放掉, new的东西都不会自己消除,需要我们在适合的使用调用delete
if(m_pName!=NULL) {
delete []m_pName;    //因为它是一个数组所以需要用delete []
m_pName=NULL;       //将它设置为null 防止再次使用这个指针去访问原来的地址,原来的地址已经被我们delete了.但编译器不会帮我们自动清它为null 所以我们自己清.
}
}

 

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.

原创粉丝点击